GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak nastavit soukromý registr dockerů na Ubuntu 18.04 LTS

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?

  1. Instalovat závislosti
  2. Nainstalujte Docker a Docker-compose
  3. Nastavte soukromý registr dockerů
  4. 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.04

Po 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/ubuntu16

Zkontrolujte 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/_catalog

A v registru není žádný obrázek dockeru.

Nyní vložte náš vlastní obrázek do registru Private Docker.

docker push registry.hakase-labs.io/ubuntu16

Zkontrolujte 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í.


Ubuntu
  1. Jak nastavit soukromý registr dockerů na Rocky Linux 8

  2. Jak nastavit Rsyslog Server na Ubuntu 18.04 LTS

  3. Jak nastavit Elasticsearch na Ubuntu 18.04 a 16.04 LTS

  1. Jak nainstalovat Docker na Ubuntu 22.04 / 20.04 LTS

  2. Jak nastavit soukromý registr dockerů v Kubernetes (k8s)

  3. Jak nastavit soukromý registr dockerů na Ubuntu 20.04

  1. Jak nastavit řešení pro monitorování sítě OpenNMS na Ubuntu 20.04 LTS

  2. Jak nastavit soukromý registr Docker na CentOS 7 / Ubuntu 16.04 / Fedora 26/25

  3. Jak nainstalovat Zabbix 2.2 na Ubuntu 14.04 LTS