Na CoreOS-u postavite svoj vlastiti Docker registar

Na CoreOS-u postavite svoj vlastiti Docker registar

Svi znamo i volimo Docker, platformu za stvaranje, upravljanje i distribuciju kontejnera aplikacija na više računala. Docker Inc. pruža uslugu za smještaj otvorenih spremnika za preuzimanje (ili povlačenje) poput git repozitorija poznatog kao "Docker Registry". Zamislite to kao GitHub za Docker kontejnere.

Ali što ako želite ugostiti svoj vlastiti registar odvojen od javnog? Pa, Docker Inc. je otvorio svoju aplikaciju Registry na GitHubu.

Ovaj vodič će vas odvesti kroz proces postavljanja privatnog Docker registra pomoću CoreOS-a na novom VPS-u.

CoreOS + Docker

Nećemo trošiti puno vremena na to što točno Docker i CoreOS mogu učiniti, jer je to izvan dosega ovog vodiča. U biti, CoreOS je dizajniran za masivne klastere poslužitelja, mali je, brz i automatski dobiva redovita sigurnosna ažuriranja. Njegov korijenski datotečni sustav je također samo za čitanje, što znači da morate koristiti Docker za pokretanje bilo koje vrste softvera koji nije uključen u osnovnu instalaciju.

To čini Core OS savršenim host sustavom za Docker!

Povlačenje i pokretanje najnovijeg registra

Docker Inc. je dao Registry kao sliku najviše razine, što znači da ga možemo povući prema dolje jednostavnim:

docker pull registry

This can take a few minutes depending on the connection speed.

Plus što je slika vrhunske razine također znači da dobiva redovitu podršku i ažuriranja.

Sada testirajmo registar. Možemo stvoriti novi spremnik pomoću slike registra:

docker run -p 5000:5000 -d --name=basic_registry registry

Za one koji nisu previše koristili Docker, -pzastavica je za PORT, što znači da izlažemo port 5000 iz spremnika na port hosta 5000.

Oznaka -doznačava daemon, to će uzrokovati pokretanje spremnika u pozadini, a ne ispis izlaza na trenutnu SSH sesiju, također želimo imenovati ovaj osnovni testni spremnik pomoću --nameopcije tako da možemo lako upravljati njime kasnije.

Provjerite radi li se vaš osnovni spremnik registra pomoću docker ps. Izlaz bi trebao izgledati slično:

CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                    NAMES
edfb54e4a8c4        registry:0.8.1      "/bin/sh -c 'exec do   7 seconds ago       Up 6 seconds        0.0.0.0:5000->5000/tcp   basic_registry

Također, posjetite http://YOUR_IP:5000u svom web pregledniku i trebali biste dobiti poruku poput sljedeće:

"docker-registry server (dev) (v0.8.1)"

Notice the word dev in the parenthesis. This means that the server is currently running the dev config. We'll look over more configuration soon.

Sada imate pokrenut vlastiti (vrlo osnovni) registar spremnika! Ali još nismo gotovi.

Možda želite ovo sačuvati privatno od znatiželjnih očiju ili možda pohranite svoje slike na Amazon S3 umjesto u lokalnoj pohrani. Prođimo kroz različite opcije konfiguracije u sljedećem odjeljku.

Prije nego krenemo dalje, uništimo testni spremnik kako ne bismo naišli na konfliktne portove.

docker kill basic_registry

Konfiguracija registra

Postoje dva načina na koje možemo prenijeti konfiguraciju u Docker Registry. Jedan način je prosljeđivanje varijabli okruženja u novi spremnik, a drugi je dodavanje konfiguracijske datoteke.

Evo nekoliko uobičajenih opcija konfiguracije koje ćemo koristiti:

  • loglevel- Minimalna količina informacija za prijavu na konzolu. Zadano je info.
  • standalone- Treba li ovaj Registar djelovati samostalno? (Nikad ne postavlja upite javnom registru.) Zadana postavka je true.
  • index_endpoint- Ako nije samostalan, koji ćemo drugi indeks tražiti? Zadano index.docker.io.
  • cachei cache_lru- Opcije koje se odnose na korištenje Redis predmemorije za male datoteke, to ćemo se dotaknuti kasnije.
  • storage- Koju pozadinu za pohranu trebamo koristiti za ovaj poslužitelj? (U ovom vodiču koristit ćemo lokalno).
  • storage_path - Ako koristimo lokalnu pohranu, koji direktorij bismo trebali koristiti za čuvanje datoteka?

Prije nego počnemo raditi s konfiguracijom, potrebna nam je osnovna datoteka za rad. Datoteka iz spremišta Docker Registry na GitHubu će raditi sasvim dobro:

wget https://raw.githubusercontent.com/docker/docker-registry/0.8/config/config_sample.yml

Datoteka bi se trebala uspješno spremiti s izlazom kao što je:

2014-09-14 14:09:01 (156 MB/s) - 'config_sample.yml' saved [5384/5384]

Sjajno! Sada možemo modificirati ovu datoteku kako bi odgovarala našim potrebama.

Jedini uređivač teksta koji dolazi s Core OS-om je vim, ali ne brinite ako ga nikada prije niste koristili, ovo će objasniti korak po korak što urediti i kako to učiniti.

vim config_sample.yml

Nakon što otvorite datoteku, pritisnite Ii donji desni kut bi trebao prikazati: -- INSERT --za način umetanja. Pomaknite se do dna datoteke pomoću tipki sa strelicama, trebali biste vidjeti odjeljak s oznakom prod.

Promijenit ćemo dva retka, promjene su ispod

prod:
    <<: *local
    storage_path: _env:STORAGE_PATH:/data

Ono što smo učinili je da promijenimo prodkonfiguraciju da proizlazi iz localodjeljka umjesto s3odjeljka. Zatim smo prepisali da storage_pathbismo koristili put /dataunutar novog spremnika.

Nakon što ste potvrdili da su sve promjene točne, pritisnite ESCza izlaz iz načina umetanja i upišite :wq(to znači da upišite promjene u datoteku i zatvorite vim.)

Sada preimenujmo datoteku u just config.yml

mv config_sample.yml config.yml

Redis predmemorija (opcionalno)

Ako želite upotrijebiti redis za ubrzavanje registra spremnika, jednostavno je kao povlačenje novog spremnika iz javnog registra i dodavanje još nekoliko redaka konfiguracije.

Prvo povucite gornju sliku Redisa:

docker pull redis

Nakon što se slika uspješno povuče, možemo je pokrenuti i imenovati kao što smo učinili s testnim registrom:

docker run -d --name registry-redis redis

Budući da je redis u memoriji, za njega ne trebamo ništa konfigurirati jer ćemo ga povezati sa spremnikom registra u kasnijim koracima.

Još jednom, provjerite radi li pomoću docker ps:

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
54f65641eccf        redis:2.8           "redis-server"      2 seconds ago       Up 1 seconds        6379/tcp            registry-redis

Sada ponovno otvorite config.ymlin vimi uđite u način umetanja kao i prvi put kada smo ga uređivali.

Dodajte sljedeće retke ispod prododjeljka, pazeći da su pravilno uvučeni. Ovaj put samo dodajemo cachei cache_lru.

cache:
    host: _env:REDIS_PORT_6379_TCP_ADDR
    port: _env:REDIS_PORT_6379_TCP_PORT
    db: 0

cache_lru:
    host: _env:REDIS_PORT_6379_TCP_ADDR
    port: _env:REDIS_PORT_6379_TCP_PORT
    db: 1

Varijable okoline REDIS_PORT_6379_TCP_ADDRi REDIS_PORT_6379_TCP_PORTprosljeđuju se u spremnik registra nakon povezivanja s Redis spremnikom.

Uz to, sada ste postavili Redis spremnik koji će raditi ruku pod ruku s vašim spremnikom registra. Sada na izgradnju registra!

Izgradnja kontejnera

Imamo sve konfiguracije postavljene i spremne, sada moramo izgraditi stvarni spremnik registra.

vim DockerfilePokrenite da biste stvorili novi Dockerfile. Uđite u način umetanja i slijedite izmjene u nastavku.

FROM registry:latest

# Add the custom configuration file we made 
ADD ./config.yml /docker-registry/config/config.yml

# Create the data directory
RUN mkdir /data

# Set the configuration file to config.yml
env DOCKER_REGISTRY_CONFIG /docker-registry/config/config.yml

# Make sure we use the prod configuration settings 
env SETTINGS_FLAVOR prod

Ono što smo učinili iznad je u biti proširiti sliku registra tako da će koristiti našu konfiguracijsku datoteku i postavke. Dockerfile je skup uputa za izgradnju koje Docker čita i gradi. Ako želite saznati više o Dockerfiles i njihovoj sintaksi, pogledajte službenu dokumentaciju Docker web-mjesta.

Zatim moramo napraviti spremnik za upotrebu.

docker build -t my_registry .


Sending build context to Docker daemon 13.82 kB
Sending build context to Docker daemon 
Step 0 : FROM registry
 ---> e42d15ec8417
Step 1 : ADD ./config.yml /docker-registry/config/config.yml
 ---> 4339f026d459
Removing intermediate container 2d5138fbcd34
Step 2 : RUN mkdir /data
 ---> Running in a090f0bdbfd1
 ---> 8eb27ba6e12a
Removing intermediate container a090f0bdbfd1
Step 3 : env DOCKER_REGISTRY_CONFIG /docker-registry/config/config.yml
 ---> Running in 565b5bfb2b22
 ---> 914462e46dc0
Removing intermediate container 565b5bfb2b22
Step 4 : env SETTINGS_FLAVOR prod
 ---> Running in 31a92847b851
 ---> b5949575c374
Removing intermediate container 31a92847b851
Successfully built b5949575c374

Sada smo spremni za trčanje!

Napravimo direktorij na našem host sustavu za montiranje u spremnik kao /datavolumen.

mkdir registry-data

Sada možemo pokrenuti novi kontejner. Ako planirate koristiti Redis predmemoriju, upotrijebite 2. naredbu u nastavku.

# For a non-Redis cache registry
docker run -d -p 5000:5000 -v /home/core/registry-data:/data --name=private_reg my_registry

# For a Redis cached registry (Must have followed Redis Caching section above)
docker run -d -p 5000:5000 -v /home/core/registry-data:/data --name=private_reg --link registry-redis:redis my_registry

Kako biste bili sigurni da vaš poslužitelj radi ispravno, posjetite http://YOUR_IP:5000. Vidjet ćete sljedeću poruku:

"docker-registry server (prod) (v0.8.1)"

Primijetite što (prod)znači da su naše promjene konfiguracije bile uspješne!

Konfigurirajte svoj lokalni Docker klijent

Sada kada imamo vlastiti pokrenuti registar, želimo da ga Docker klijent na našim lokalnim strojevima počne koristiti. Obično biste koristili naredbu: docker login, ali za našu upotrebu moramo dodati još jedan argument naredbi za prijavu:

docker login YOUR_IP:5000

Unesite korisničko ime i lozinku (razmišljajte o tome kao na stvaranju novog računa) i zanemarite poruku koja kaže da ga morate aktivirati.

Zatim, povucimo stokovnu sliku i gurnimo je u naše vlastito spremište.

# Pull the busybox image from the public registry
docker pull busybox

# Tag it with our IP/URL
docker tag busybox YOUR_IP:5000/busybox

# Push it to our newly made registry
docker push YOUR_IP:5000/busybox

Ako je sve ispravno, konačna poruka trebala bi biti u sljedećim redovima:

Pushing tag for rev [a9eb17255234] on 

Čestitamo! Postavili ste svoje vlastito docker spremište.

Što je sljedeće?

Evo nekoliko ideja kako poboljšati svoj novi privatni registar:

  • Obrnuti proxy pomoću Nginxa ili Apachea za postavljanje dodatne sigurnosti ispred njega, poput jednostavne HTTP auth.
  • Nabavite domenu za svoj poslužitelj i postavite je tako da svom registru možete pristupiti nečim poput: registry.mysite.com
  • Kupite (ili sami potpišite) SSL certifikat za dodatnu zaštitu ako vaši spremnici sadrže osjetljive podatke.

Evo kako provjeriti Hyper-V kontejnere na Windows 10 Insideru

Evo kako provjeriti Hyper-V kontejnere na Windows 10 Insideru

Microsoft je u novom postu na blogu objasnio kako Windows Insideri mogu testirati Hyper-V spremnike na Windows 10, novom rješenju za virtualizaciju koje omogućuje pokretanje aplikacija bez utjecaja na ostatak vašeg operativnog sustava.

Kako instalirati Harbor na CentOS 7

Kako instalirati Harbor na CentOS 7

Harbor je poslužitelj registra otvorenog koda poslovne klase koji pohranjuje i distribuira Docker slike. Harbor proširuje Docker Distribution otvorenog koda b

Na CoreOS-u postavite svoj vlastiti Docker registar

Na CoreOS-u postavite svoj vlastiti Docker registar

Svi znamo i volimo Docker, platformu za stvaranje, upravljanje i distribuciju kontejnera aplikacija na više računala. Docker Inc. pruža uslugu t

Instalirajte Rancher na CentOS 7

Instalirajte Rancher na CentOS 7

Korištenje drugog sustava? Uvod Rancher je platforma otvorenog koda za pokretanje kontejnera i izgradnju privatnog kontejnerskog servisa. Rančer je baza

Instalacija Docker CE na CentOS 7

Instalacija Docker CE na CentOS 7

Docker kontejnerska tehnologija omogućuje vam pokretanje aplikacija u specifičnom i izoliranom okruženju. Docker Community Edition (CE) je novi naziv za fre

Postavite Kubernetes s Kubeadm-om na CentOS 7

Postavite Kubernetes s Kubeadm-om na CentOS 7

Pregled Ovaj članak treba vam pomoći da u kratkom roku pokrenete Kubernetes klaster s kubeadmom. Ovaj vodič će implementirati dva poslužitelja, na

Početak rada s Kubernetesom na CentOS-u 7

Početak rada s Kubernetesom na CentOS-u 7

Kubernetes je platforma otvorenog koda koju je razvio Google za upravljanje kontejnerskim aplikacijama na klasteru poslužitelja. Nadovezuje se na desetljeće i

Sticky Session with Docker Swarm (CE) na CentOS 7

Sticky Session with Docker Swarm (CE) na CentOS 7

Korištenje drugog sustava? Uvod Docker Swarm pretvara vaše pojedinačne poslužitelje u klaster računala, olakšavajući skaliranje, visoku dostupnost i

Kako koristiti Docker: Stvaranje vašeg prvog Docker spremnika

Kako koristiti Docker: Stvaranje vašeg prvog Docker spremnika

Ovaj vodič objašnjava osnove početka rada s Dockerom. Pretpostavljam da već imate instaliran Docker. Koraci u ovom vodiču će raditi na

Uspon strojeva: primjene AI u stvarnom svijetu

Uspon strojeva: primjene AI u stvarnom svijetu

Umjetna inteligencija nije u budućnosti, ovdje je upravo u sadašnjosti. U ovom blogu Pročitajte kako su aplikacije umjetne inteligencije utjecale na različite sektore.

DDOS napadi: kratak pregled

DDOS napadi: kratak pregled

Jeste li i vi žrtva DDOS napada i zbunjeni ste metodama prevencije? Pročitajte ovaj članak kako biste riješili svoje upite.

Jeste li se ikada zapitali kako hakeri zarađuju novac?

Jeste li se ikada zapitali kako hakeri zarađuju novac?

Možda ste čuli da hakeri zarađuju mnogo novca, ali jeste li se ikada zapitali kako zarađuju toliki novac? raspravimo.

Revolucionarni Googleovi izumi koji će vam olakšati život.

Revolucionarni Googleovi izumi koji će vam olakšati život.

Želite li vidjeti revolucionarne izume Googlea i kako su ti izumi promijenili život svakog čovjeka danas? Zatim čitajte na blogu kako biste vidjeli Googleove izume.

Friday Essential: Što se dogodilo s automobilima s umjetnom inteligencijom?

Friday Essential: Što se dogodilo s automobilima s umjetnom inteligencijom?

Koncept samovozećih automobila koji će krenuti na ceste uz pomoć umjetne inteligencije san je koji već neko vrijeme imamo. No, unatoč nekoliko obećanja, nigdje ih nema. Pročitajte ovaj blog kako biste saznali više…

Tehnološka singularnost: daleka budućnost ljudske civilizacije?

Tehnološka singularnost: daleka budućnost ljudske civilizacije?

Kako se znanost razvija velikom brzinom, preuzimajući mnoge naše napore, raste i rizik da se podvrgnemo neobjašnjivoj Singularnosti. Pročitajte što bi za nas mogla značiti singularnost.

Evolucija pohrane podataka – Infografika

Evolucija pohrane podataka – Infografika

Metode pohrane podataka su se razvijale možda od rođenja podataka. Ovaj blog pokriva evoluciju pohrane podataka na temelju infografike.

Funkcionalnosti slojeva referentne arhitekture velikih podataka

Funkcionalnosti slojeva referentne arhitekture velikih podataka

Pročitajte blog kako biste na najjednostavniji način upoznali različite slojeve u arhitekturi velikih podataka i njihove funkcionalnosti.

6 nevjerojatnih prednosti posjedovanja pametnih kućnih uređaja u našim životima

6 nevjerojatnih prednosti posjedovanja pametnih kućnih uređaja u našim životima

U ovom digitalnom svijetu, pametni kućni uređaji postali su ključni dio života. Evo nekoliko nevjerojatnih prednosti pametnih kućnih uređaja o tome kako naš život čine vrijednim življenja i jednostavnijim.

Ažuriranje dodataka macOS Catalina 10.15.4 uzrokuje više problema nego što ih rješava

Ažuriranje dodataka macOS Catalina 10.15.4 uzrokuje više problema nego što ih rješava

Nedavno je Apple izdao macOS Catalina 10.15.4 dodatak ažuriranju kako bi riješio probleme, ali čini se da ažuriranje uzrokuje više problema koji dovode do zalijevanja mac strojeva. Pročitajte ovaj članak da biste saznali više