Docker Registry nebo 'Registry' je open source a vysoce škálovatelná aplikace na straně serveru, kterou lze použít k ukládání a distribuci obrazů Docker. Byla to aplikace na straně serveru za Docker Hubem. Ve většině případů použití je Docker Registry skvělým řešením, pokud chcete implementovat systém CI/CD na vývoj aplikací. Private Docker Registry poskytuje více výkonů pro vývojový a produkční cyklus centralizací všech vašich vlastních obrázků aplikací Docker na jednom místě.
V tomto tutoriálu vám ukážeme, jak nainstalovat a nakonfigurovat soukromý registr dockeru na serveru Ubuntu 18.04. Použijeme webový server Nginx a chráníme registr uživatelským jménem a heslem (základní ověření).
Předpoklady
- Server Ubuntu 18.04
- Oprávnění uživatele root
Co budeme dělat?
- Instalovat závislosti
- Nainstalujte Docker a Docker-compose
- Nastavte soukromý registr dockerů
- Testování
Krok 1 – Instalace závislostí balíčků
Nejprve nainstalujeme některé závislosti balíčků pro nasazení registru Private Docker.
Nainstalujte závislosti balíčků pomocí následujícího příkazu.
sudo apt install -y gnupg2 pass apache2-utils httpie
Balíčky gnupg2 a pass budou použity k uložení ověření hesla do registru dockeru. A pro generování základní autentizace bude použit apache2-utils a pro testování bude použito httpie.
Krok 2 – Instalace Docker a Docker-compose
Nyní nainstalujeme docker a docker-compose z oficiálního úložiště Ubuntu.
Nainstalujte Docker a Docker-compose spuštěním následujícího příkazu.
sudo apt install -y docker.io docker-compose -y
Po dokončení instalace spusťte službu docker a přidejte ji do doby spouštění.
sudo systemctl spustit docker
sudo systemctl povolit docker
Docker je v provozu a Docker-compose byl nainstalován. Zkontrolujte pomocí příkazu níže.
verze dockeru
verze docker-compose
Zobrazí se vám verze Docker a Docker-compose nainstalovaná ve vašem systému.
Krok 3 – Nastavení soukromého registru dockerů
V tomto kroku nakonfigurujeme prostředí registru Docker vytvořením prostředí adresářů a vytvoříme určitou konfiguraci včetně docker-compose.yml, virtuálního hostitele nginx a další konfigurace atd.
- Vytvořit adresáře projektů
Vytvořte nový adresář pro projekt s názvem 'registry' a uvnitř vytvořte adresáře 'nginx' a 'auth'.
mkdir -p registry/{nginx,auth}
Poté přejděte do adresáře 'registry' a znovu vytvořte nové adresáře v 'nginx'.
cd registry/
mkdir -p nginx/{conf.d/,ssl}
Výsledkem je, že adresáře projektů vypadají jako na následujícím obrázku.
strom
- Vytvořit skript pro skládání Docker
Nyní chceme vytvořit nový skript docker-compose.yml pro nasazení registru Docker.
Přejděte do adresáře 'registry' a vytvořte nový konfigurační soubor 'docker-compose.yml'.
cd registry/
vim docker-compose.yml
Nejprve definujte verzi pro psaní, kterou chcete používat, a službu.
verze:'3'
služby:
Poté přidejte první službu s názvem „registr“. Služba Docker Registry bude používat obraz dockeru, který poskytuje tým docker 'registry:2. Připojí svazek dockeru 'registrydata' a místní adresář s názvem 'auth', který obsahuje základní ověřovací soubor 'registry.passwd'. A poslední, poběží na vlastním obrazu dockeru s názvem 'mynet' a zpřístupní port 5000 na kontejneru i hostiteli.
#registry registru:image:registry:2 restart:vždy porty:- "5000:5000" prostředí:REGISTRY_AUTH:htpasswd REGISTRY_AUTH_HTPASSWD_REALM:Registry-Realm REGISTRY_AUTH_HTPASSWD_PATH:/auth:REGISTRYSYSTEM_SYSTEM_data/registry_registry.passwd /data - ./auth:/auth sítě:- mynet
Dále konfigurace služby 'nginx', která bude spouštět porty HTTP a HTTPS a připojí místní adresář 'conf.d' pro konfiguraci virtuálního hostitele a 'ssl' pro certifikáty ssl.
#Nginx Service nginx:image:nginx:alpine container_name:nginx restart:ledaže by bylo zastaveno tty:true ports:- "80:80" - "443:443" svazky:- ./nginx/conf.d/:/etc/nginx/conf.d/ - ./nginx/ssl/:/etc/nginx/ssl/ sítě:- mynet
A nakonec definujte vlastní síť 'mynet' pomocí ovladače mostu a 'registrydata' pomocí místního ovladače.
#Docker Networksnetworks:mynet:driver:bridge#Volumesvolumes:registrydata:driver:local
Uložte a zavřete konfiguraci.
Níže je kompletní konfigurace:
verze:'3'services:#Registry registru:image:registry:2 restart:vždy porty:- "5000:5000" prostředí:REGISTRY_AUTH:htpasswd REGISTRY_AUTH_HTPASSWD_REALM:Registry-Realm REGISTRY_AUTH_HTPASSaWD_ROREGISTRÁTOR_HTPASSaFID_ROREGISTRÁTOR_HATPAGE. /objemy dat:- registrydata:/data - ./auth:/auth sítě:- mynet#Nginx Service nginx:image:nginx:alpine container_name:nginx restart:if-stoppped tty:true ports:- "80:80" - Svazky "443:443":- ./nginx/conf.d/:/etc/nginx/conf.d/ - ./nginx/ssl/:/etc/nginx/ssl/ sítě:- mynet#Docker Networksnetworks:mynet :driver:bridge#Volumesvolumes:registrydata:driver:local
- Konfigurace virtuálního hostitele Nginx
Po vytvoření skriptu docker-compose vytvoříme virtuálního hostitele a další konfiguraci pro službu nginx.
Přejděte do adresáře 'nginx/conf.d/' a vytvořte nový soubor virtuálního hostitele s názvem 'registry.conf'.
cd nginx/conf.d/
vim registry.conf
Vložte následující konfiguraci.
upstream docker-registry { server registry:5000;}server { listen 80; název_serveru registry.hakase-labs.io; return 301 https://registry.hakase-labs.io$request_uri;}server { listen 443 ssl http2; název_serveru registry.hakase-labs.io; ssl_certificate /etc/nginx/ssl/fullchain.pem; ssl_certificate_key /etc/nginx/ssl/privkey.pem; # Soubory protokolu pro Debug error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; umístění / { # Nepovolit připojení z dockeru 1.5 a dřívějších # docker starší než 1.6.0 nenastavil správně uživatelského agenta na příkaz ping, zachyťte uživatelské agenty "Go *" if ($http_user_agent ~ "^(docker\/1\ .(3|4|5(?!\.[0-9]-dev))|Go ).*$" ) { return 404; } proxy_pass http://docker-registry; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $schéma; proxy_read_timeout 900; }}
Uložit a zavřít.
Dále vytvořte další konfiguraci pro zvýšení max_body_size na nginx. To vám umožní nahrávat obrázky dockeru o maximální velikosti 2 GB.
vim Additional.conf
Vložte konfiguraci níže.
client_max_body_size 2G;
Uložit a zavřít.
– Konfigurace certifikátu SSL a základního ověřování
Zkopírujte soubory certifikátu SSL vaší domény do adresáře 'ssl'.
cp /cesta/k/ssl/fullchain.pem ssl/
cp /cesta/k/ssl/privkey.pem ssl/
Nyní přejděte do adresáře 'auth' a vygenerujte nový soubor hesel 'registry.passwd'.
cd auth/
Vygenerujte nové heslo pro uživatele hakase.
htpasswd -Bc registry.passwd hakase
ZADEJTE SILNÉ HESLO
A nastavení prostředí pro nasazení Private Docker Registry bylo dokončeno.
Níže je snímek obrazovky našich souborů a adresářů prostředí.
strom
- Spusťte Docker Registry
Spusťte registr Docker pomocí příkazu docker-compose níže.
docker-compose up -d
A dostanete výsledek, jak je uvedeno níže.
Poté se ujistěte, že registr a služba nginx jsou v provozu. Zkontrolujte pomocí následujícího příkazu.
docker-compose ps
netstat -plntu
Zobrazí se vám, že služba „registr“ běží na portu „5000“ a služba „nginx“ zobrazí porty HTTP a HTTPS, jak je uvedeno níže.
Krok 4 – Testování
Než otestujeme náš soukromý registr dockerů, musíme přidat certifikát kořenové CA do samotného dockeru a do systému.
Pokud používáte certifikát souboru pem, exportujte jej do souboru .crt pomocí příkazu OpenSSL.
openssl x509 -in rootCA.pem -informovat PEM -out rootCA.crt
Nyní vytvořte nový adresář pro certifikát dockeru a zkopírujte do něj certifikát kořenové CA.
mkdir -p /etc/docker/certs.d/registry.hakase-labs.io/
cp rootCA.crt /etc/docker/certs.d/registry.hakase-labs.io/A poté vytvořte nový adresář '/usr/share/ca-certificate/extra' a zkopírujte do něj certifikát kořenové CA.
mkdir -p /usr/share/ca-certificates/extra/
cp rootCA.crt /usr/share/ca-certificates/extra/Poté znovu nakonfigurujte balíček 'ca-certificate' a restartujte službu Docker.
dpkg-reconfigure ca-certificates
systemctl restart docker
– Stáhnout obrázek Docker
Stáhněte si nový obraz Dockeru pomocí následujícího příkazu.
docker pull ubuntu:16.04Po dokončení označte obrázek pro soukromý registr příkazem níže.
značka obrázku dockeru ubuntu:16.04 registry.hakase-labs.io/ubuntu16Zkontrolujte znovu seznam obrázků Docker v systému a získáte nové obrázky, jak je uvedeno níže.
obrázky dockeru
– Odeslat obrázek do soukromého místního registru
Přihlaste se do registru Private Docker pomocí následujícího příkazu.
Přihlášení do dockeru https://registry.hakase-labs.io/v2/Zadejte uživatelské jméno a heslo podle souboru 'registry.htpasswd'.
Nyní zkontrolujte dostupnost obrazu dockeru v registru.
http -a hakase https://registry.hakase-labs.io/v2/_catalogA v registru není žádný obrázek dockeru.
Nyní vložte náš vlastní obrázek do registru Private Docker.
docker push registry.hakase-labs.io/ubuntu16Zkontrolujte to znovu a ujistěte se, že jste získali obraz dockeru 'ubuntu16' v soukromém úložišti.
http -a hakase https://registry.hakase-labs.io/v2/_catalog
A nakonec byla úspěšně dokončena instalace a konfigurace Private Docker Registry s Nginx a základní autentizací.
Jak spravovat balíčky pomocí APT na Ubuntu 18.04 LTS Jak nainstalovat Monica Personal Relationship Manager na Ubuntu 18.04 LTSUbuntu