Pe CoreOS, configurați-vă propriul registru Docker

Cu toții cunoaștem și iubim Docker, o platformă pentru a crea, gestiona și distribui containerele de aplicații pe mai multe mașini. Docker Inc. oferă un serviciu pentru găzduirea containerelor open source pentru a fi descărcate (sau trase) ca un depozit git cunoscut sub numele de „Registrul Docker”. Gândiți-vă la el ca la un GitHub pentru containerele Docker.

Dar dacă vrei să găzduiești propriul registru separat de cel public? Ei bine, Docker Inc. și-a aprobat cererea de înregistrare pe GitHub.

Acest tutorial vă va duce la procesul de configurare a unui registru Docker privat folosind CoreOS pe un VPS nou.

CoreOS + Docker

Nu vom petrece o grămadă de timp să trecem exact de ceea ce pot face Docker și CoreOS, întrucât este în afara domeniului de aplicare al acestui tutorial. În esență, CoreOS este proiectat pentru clustere masive de server, este mic, rapid și primește automat actualizări de securitate. Sistemul său de fișiere rădăcină este de asemenea numai în citire, ceea ce înseamnă că trebuie să utilizați Docker pentru a rula orice fel de software care nu este inclus cu instalarea de bază.

Acest lucru face din Core OS un sistem gazdă perfect pentru Docker!

Tragerea și rularea celui mai recent registru

Docker Inc. a furnizat Registrul ca imagine de nivel superior, ceea ce înseamnă că îl putem trage în jos cu un simplu:

docker pull registry

Acest lucru poate dura câteva minute în funcție de viteza de conectare.

Un plus de a fi o imagine de nivel superior înseamnă, de asemenea, că primește suport și actualizări periodice.

Acum să testăm registrul. Putem crea un nou container folosind imaginea registrului:

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

Pentru cei care nu au folosit prea mult Docker, este indicat -psteagul PORT, ceea ce înseamnă că expunem portul 5000 din container pe portul 5000 gazdă.

-dSteagul reprezintă daemon, acest lucru va determina containerul pentru a rula în fundal și nu de imprimare de ieșire la sesiunea curentă SSH, dorim , de asemenea , pentru a numi acest container de bază de testare folosind --nameopțiunea , astfel încât să putem gestiona cu ușurință mai târziu.

Asigurați-vă că containerul dvs. de bază de bază se execută docker ps. Produsul ar trebui să arate similar cu:

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

De asemenea, accesați http://YOUR_IP:5000în browserul dvs. web și ar trebui să primiți un mesaj precum:

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

Observați cuvântul devîn paranteză. Aceasta înseamnă că serverul execută în prezent configurația dev. În curând vom analiza mai multe configurații.

Acum aveți propriul dvs. registru de containere (foarte de bază) care funcționează! Dar nu am terminat încă.

Poate doriți să vă feriți de privirea asta, sau poate să vă stocați imaginile pe Amazon S3 în loc de stocare locală. Să trecem peste diferitele opțiuni de configurare din secțiunea următoare.

Înainte de a merge mai departe, să omorăm containerul de testare, astfel încât să nu intrăm în porturi conflictuale.

docker kill basic_registry

Configurația registrului

Există două modalități prin care putem trece configurația la Registrul Docker. Un mod este trecerea variabilelor de mediu la un nou container, iar cealaltă este adăugarea unui fișier de configurare.

Iată câteva dintre opțiunile comune de configurare pe care le vom folosi:

  • loglevel- Cantitatea minimă de informații pentru a vă conecta la consolă. Implicit este info.
  • standalone- Acest registru ar trebui să acționeze de unul singur? (Nu interoghează niciodată registrul public.) Default este true.
  • index_endpoint- Dacă nu este autonom, ce alt index vom interoga? Implicit index.docker.io.
  • cacheși cache_lru- Opțiuni referitoare la utilizarea unei cache Redis pentru fișiere mici, vom atinge acest lucru mai târziu.
  • storage- Ce backend de stocare ar trebui să folosim pentru acest server? (În acest tutorial vom folosi local).
  • storage_path - Dacă folosim spațiu de stocare local, ce director ar trebui să folosim pentru a păstra fișierele?

Înainte de a lucra cu configurația, avem nevoie de un fișier de bază cu care să funcționăm. Fișierul din depozitul Docker Registry de pe GitHub va funcționa bine:

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

Fișierul ar trebui să salveze cu succes cu o ieșire, cum ar fi:

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

Grozav! Acum putem modifica acest fișier pentru a se potrivi nevoilor noastre.

Singurul editor de text care vine cu Core OS este vim, dar nu vă faceți griji dacă nu l-ați folosit niciodată, acest lucru vă va explica pas cu pas ce trebuie să editați și cum să îl faceți.

vim config_sample.yml

Odată ce fișierul este deschis, apăsați Iîn colțul din dreapta jos și trebuie să fie afișat: -- INSERT --pentru modul de introducere. Parcurgeți până la partea de jos a fișierului folosind tastele săgeată, ar trebui să vedeți o secțiune etichetată prod.

Vom schimba cele două rânduri, modificările sunt mai jos

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

Ceea ce am făcut este să schimbăm prodconfigurația pentru a deriva din localsecțiune în loc de s3secțiune. Apoi rescriem storage_pathpentru a utiliza calea /datadin noul container.

După ce ați confirmat că toate modificările sunt corecte, apăsați ESCpentru a ieși din modul și tipul de introducere :wq(asta înseamnă să scrieți modificările în fișier și ieșiți din vim.)

Acum să redenumim fișierul doar config.yml

mv config_sample.yml config.yml

Redispunde memoria cache (opțional)

Dacă doriți să utilizați redis pentru a accelera registrul de containere, este la fel de simplu ca extragerea unui nou container din registrul public și adăugarea altor câteva linii de configurare.

În primul rând, trageți imaginea de nivel superior a Redis:

docker pull redis

Odată ce imaginea este trasă cu succes, o putem rula și numi așa cum am făcut-o cu registrul de testare:

docker run -d --name registry-redis redis

Deoarece redis este în memorie, nu trebuie să facem nicio configurație pentru aceasta, deoarece o vom conecta la containerul de registru în etapele ulterioare.

Încă o dată, asigurați-vă că funcționează folosind 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

Acum re-deschide config.ymlîn vimși introduceți modul de inserție la fel ca prima dată când am editat.

Adăugați următoarele linii sub prodsecțiune, asigurându-vă că indentați corect. De data aceasta adăugăm doar cacheși 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

Variabilele de mediu REDIS_PORT_6379_TCP_ADDRși REDIS_PORT_6379_TCP_PORTsunt transmise containerului de înregistrare la conectarea cu containerul Redis.

Cu aceasta, acum ați configurat un container Redis care va funcționa mână în mână cu containerul dvs. de înregistrare. Acum la construirea registrului!

Construirea containerului

Avem toată configurația setată și gata, acum trebuie să construim containerul de registru.

vim DockerfileAprindeți- vă pentru a crea un nou Dockerfile. Accesați modul de introducere și urmați modificările de mai jos.

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

Ceea ce am făcut mai sus este, în esență, extinderea imaginii de registru, astfel încât va folosi fișierul de configurare și setările noastre. Un Dockerfile este un set de instrucțiuni de construire pentru ca Docker să citească și să creeze. Dacă doriți să aflați mai multe despre Dockerfiles și sintaxa lor, aruncați o privire la documentația oficială a site-ului Docker.

În continuare, trebuie să construim containerul pentru utilizare.

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

Acum suntem gata să alergăm!

Să facem un director pe sistemul nostru gazdă pentru a fi montat în container ca /datavolum.

mkdir registry-data

Acum putem roti un nou container. Dacă intenționați să folosiți memoria cache Redis, utilizați a doua comandă de mai jos.

# 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

Pentru a vă asigura că serverul dvs. rulează corect, vizitați http://YOUR_IP:5000. Veți vedea următorul mesaj:

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

Observați (prod)sensul modificărilor noastre de configurare au avut succes!

Configurați clientul Docker local

Acum că avem propriul nostru registru de rulare, dorim ca clientul Docker de pe mașinile noastre locale să înceapă să-l folosească. De obicei, utilizați comanda: docker logindar pentru utilizarea noastră, trebuie să adăugăm încă un argument la comanda de conectare:

docker login YOUR_IP:5000

Introduceți un nume de utilizator și o parolă (gândiți-vă la acest lucru precum crearea unui cont nou) și ignorați mesajul care afirmă că trebuie să îl activați.

În continuare, haideți să tragem o imagine stoc și să o împingem până la propriul nostru depozit.

# 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

Dacă totul împinge corect mesajul final ar trebui să fie conform liniei:

Pushing tag for rev [a9eb17255234] on 

Felicitări! Ați configurat propriul dvs. depozit de docker.

Ce urmeaza?

Iată câteva idei despre cum să vă îmbunătățiți noul registru privat:

  • Inversați proxy folosind Nginx sau Apache pentru a plasa securitate suplimentară în fața sa, cum ar fi o simplă autentificare HTTP.
  • Obțineți un domeniu pentru serverul dvs. și configurați-l astfel încât să puteți accesa registrul dvs. cu ceva de genul: registry.mysite.com
  • Cumpărați (sau semnați-vă) un certificat SSL pentru a adăuga și mai multă protecție dacă containerele dvs. conțin informații sensibile.


Leave a Comment

Implementați Kubernetes cu Kubeadm pe CentOS 7

Implementați Kubernetes cu Kubeadm pe CentOS 7

Prezentare generală Acest articol este menit să vă ajute să obțineți un cluster Kubernetes și să funcționeze cu kubeadm în cel mai scurt timp. Acest ghid va implementa două servere, pe

Instalați Rancher OS prin iPXE

Instalați Rancher OS prin iPXE

Rancher OS este o distribuție Linux foarte ușoară construită în jurul Docker. Sistemul de operare în sine cântărește în jur de 20 MB. Acest tutorial vă va pune în funcțiune

Instalați Docker CE pe Ubuntu 18.04

Instalați Docker CE pe Ubuntu 18.04

Introducere Docker este o aplicație care ne permite să implementăm programe rulate sub formă de containere. A fost scris în popularul limbaj de programare Go

Instalarea Docker pe CentOS 7

Instalarea Docker pe CentOS 7

Folosind un sistem diferit? Docker este o aplicație care permite implementarea software-ului în containerele virtuale. A fost scris în programul Go

Creați un roi de Docker pe Alpine Linux 3.9.0

Creați un roi de Docker pe Alpine Linux 3.9.0

Introducere Acest ghid vă va arăta cum puteți crea și configura un roi Docker folosind mai multe servere Alpine Linux 3.9.0 și Portainer. Vă rugăm să fi��i conștienți

Instalați Rancher pe Ubuntu 16.04

Instalați Rancher pe Ubuntu 16.04

Folosind un sistem diferit? Introducere Rancher este o platformă open source pentru rularea containerelor și construirea unui serviciu de containere private. Rancher este de bază

Implementați o aplicație PHP folosind Docker-compose

Implementați o aplicație PHP folosind Docker-compose

Aplicațiile PHP sunt de obicei compuse dintr-un server web, un sistem relațional de baze de date și însuși interpretul limbii. În acest tutorial vom fi levierul

Instalarea docker-compose pe CoreOS

Instalarea docker-compose pe CoreOS

Acest articol explică cum se instalează docker-compose pe CoreOS. În CoreOS, folderul / usr / este imutabil, astfel că calea standard / usr / local / bin nu este disponibilă fo

Instalați Rancher pe CentOS 7

Instalați Rancher pe CentOS 7

Folosind un sistem diferit? Introducere Rancher este o platformă open source pentru rularea containerelor și construirea unui serviciu de containere private. Rancher este de bază

Sesiunea lipicioasă cu Docker Swarm (CE) pe Debian 9

Sesiunea lipicioasă cu Docker Swarm (CE) pe Debian 9

Folosind un sistem diferit? Introducere Docker Swarm transformă serverele dvs. individuale într-un grup de calculatoare; facilitarea scalării și disponibilității ridicate

Două instrumente de gestionare grafică Docker: DockerUI și Shipyard

Două instrumente de gestionare grafică Docker: DockerUI și Shipyard

Cu ajutorul aplicației Vultr Docker, puteți să implementați cu ușurință Docker pe instanța serverului dvs. Vultr. Între timp, puteți facilita sarcina de gestionare a Docker

Configurare Sentry prin Docker pe Ubuntu 16.04

Configurare Sentry prin Docker pe Ubuntu 16.04

Folosind un sistem diferit? Introducere Sentry este o soluție open source pentru urmărirea erorilor. Sentry urmărește excepțiile și alte mesaje utile

Cum se instalează Harbour pe CentOS 7

Cum se instalează Harbour pe CentOS 7

Harbour este un server de registru open-source de tip enterprise care stochează și distribuie imagini Docker. Harbour extinde distribuția Docker sursa deschisă b

Instalați Rancher Server pe RancherOS

Instalați Rancher Server pe RancherOS

Prezentare generală RancherOS este un sistem de operare incredibil de ușor (doar aproximativ 60 MB) care rulează un sistem daemon Docker ca PID 0 pentru rularea serviciilor sistemului

Noțiuni introductive despre Kubernetes pe CentOS 7

Noțiuni introductive despre Kubernetes pe CentOS 7

Kubernetes este o platformă open-source dezvoltată de Google pentru gestionarea aplicațiilor containerizate într-un grup de servere. Se construiește peste un deceniu și

Sesiunea lipicioasă cu roiul de andocare (CE) pe CentOS 7

Sesiunea lipicioasă cu roiul de andocare (CE) pe CentOS 7

Folosind un sistem diferit? Introducere Docker Swarm transformă serverele dvs. individuale într-un grup de calculatoare, facilitând scalarea, disponibilitatea ridicată

Cum să utilizați Docker: Crearea primului dvs. container Docker

Cum să utilizați Docker: Crearea primului dvs. container Docker

Acest tutorial explică elementele de bază pentru a începe cu Docker. Presupun că aveți deja Docker instalat. Pașii acestui tutorial vor funcționa pe un an

Soldul de încărcare cu Docker

Soldul de încărcare cu Docker

Când executați o aplicație web, în ​​mod normal doriți să profitați la maximum de resursele dvs. fără a fi necesar să convertiți software-ul pentru a utiliza multitreading

Începeți cu SQL Server 2017 (MS-SQL) pe CentOS 7 cu Docker

Începeți cu SQL Server 2017 (MS-SQL) pe CentOS 7 cu Docker

Condiții preliminare Motor Docker 1.8+. Minim de 4 GB spațiu pe disc. Minim de 4 GB RAM. Pasul 1. Instalează Docker Pentru a instala SQL-Server, Docker mus

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

6 lucruri extrem de nebunești despre Nintendo Switch

6 lucruri extrem de nebunești despre Nintendo Switch

Mulți dintre voi cunoașteți Switch care va fi lansat în martie 2017 și noile sale funcții. Pentru cei care nu știu, am pregătit o listă de funcții care fac din „Switch” un „gadget obligatoriu”.

Promisiuni tehnologice care sunt încă nelivrate

Promisiuni tehnologice care sunt încă nelivrate

Aștepți ca giganții tehnologiei să-și îndeplinească promisiunile? vezi ce a ramas nelivrat.

Funcționalitățile straturilor arhitecturii de referință pentru Big Data

Funcționalitățile straturilor arhitecturii de referință pentru Big Data

Citiți blogul pentru a cunoaște diferitele straturi din Arhitectura Big Data și funcționalitățile acestora în cel mai simplu mod.

Cum poate AI să ducă automatizarea proceselor la următorul nivel?

Cum poate AI să ducă automatizarea proceselor la următorul nivel?

Citiți asta pentru a afla cum devine populară inteligența artificială în rândul companiilor la scară mică și cum crește probabilitățile de a le face să crească și de a le oferi concurenților avantaje.

CAPTCHA: Cât timp poate rămâne o tehnică viabilă pentru distincția uman-AI?

CAPTCHA: Cât timp poate rămâne o tehnică viabilă pentru distincția uman-AI?

CAPTCHA a devenit destul de dificil de rezolvat pentru utilizatori în ultimii ani. Va fi capabil să rămână eficient în detectarea spam-ului și a botului în viitor?

Singularitatea tehnologică: un viitor îndepărtat al civilizației umane?

Singularitatea tehnologică: un viitor îndepărtat al civilizației umane?

Pe măsură ce Știința Evoluează într-un ritm rapid, preluând multe dintre eforturile noastre, crește și riscurile de a ne supune unei Singularități inexplicabile. Citiți, ce ar putea însemna singularitatea pentru noi.

Telemedicină și îngrijire medicală la distanță: viitorul este aici

Telemedicină și îngrijire medicală la distanță: viitorul este aici

Ce este telemedicina, îngrijirea medicală la distanță și impactul acesteia asupra generației viitoare? Este un loc bun sau nu în situația de pandemie? Citiți blogul pentru a găsi o vedere!

Te-ai întrebat vreodată cum câștigă hackerii bani?

Te-ai întrebat vreodată cum câștigă hackerii bani?

Poate ați auzit că hackerii câștigă mulți bani, dar v-ați întrebat vreodată cum câștigă acești bani? sa discutam.

Actualizarea suplimentului macOS Catalina 10.15.4 cauzează mai multe probleme decât rezolvă

Actualizarea suplimentului macOS Catalina 10.15.4 cauzează mai multe probleme decât rezolvă

Recent, Apple a lansat macOS Catalina 10.15.4 o actualizare suplimentară pentru a remedia problemele, dar se pare că actualizarea provoacă mai multe probleme care duc la blocarea mașinilor Mac. Citiți acest articol pentru a afla mai multe