Pro hladký vývoj CI/CD pomocí platformy docker zvažte použití samostatně hostovaného serveru registru dockeru. Registr Docker je úložiště, kde můžete ukládat obrázky dockerů a stahovat je, abyste spouštěli aplikace na serveru. Pro rychlejší doručování a bezpečnou infrastrukturu se doporučuje nastavit vlastní soukromý registr dockerů pro ukládání obrázků dockerů a jejich distribuci mezi organizace. V tomto článku se naučíme, jak nastavit soukromý registr dockeru na Ubuntu 20.04
Předpoklady
- Uživatelský účet s právy sudo
- Server pro registr Docker
- Nginx na serveru registru Docker
- Klientský server
- Docker a Docker-Compose na obou serverech.
Soukromý registr dockerů
Docker Registry je aplikace na straně serveru, která vám umožňuje ukládat obrázky dockeru lokálně do jednoho centralizovaného umístění. Nastavením vlastního serveru registru dockerů můžete stahovat a odesílat obrazy dockerů, aniž byste se museli připojovat k centru Docker, šetříte šířku pásma a chráníte před bezpečnostními hrozbami.
Přečtěte si také :Jak nainstalovat a používat Docker na Ubuntu 20.04 / 20.10
Než začnete
Před zahájením se ujišťuji, že jste nainstalovali Docker a Docker-Compose na klientský server i server místního registru. Pro ověření, že jste nainstalovali požadovaný software, můžete spustit následující příkazy a zkontrolovat verzi softwaru.
Verze $ docker
Verze $ docker-compose
Také se musíte ujistit, že služba dockeru je spuštěna a je nastavena tak, aby byla povolena při spouštění:
$ sudo systemctl spustit docker$ sudo systemctl povolit docker
Nainstalujte a nakonfigurujte soukromý registr dockerů
Chcete-li nakonfigurovat soukromý registr dockeru, postupujte takto:
Vytvořit adresáře registru
Nakonfigurujte svůj server, který bude hostitelem soukromého registru. Vytvořte nový adresář, do kterého budou uloženy všechny požadované konfigurační soubory.
Pomocí následujícího příkazu vytvořte nový adresář projektu „my-registry“ a dva podadresáře „nginx“ a „auth“. Pro název projektu můžete mít svůj vlastní předpoklad.
$ mkdir -p můj-registr/{nginx, auth}
Nyní přejděte do adresáře projektu a vytvořte nové adresáře v nginx jako:
$ cd my-registry/$ mkdir -p nginx/{conf.d/, ssl}
Vytvořte skript a služby Docker-Compose
Musíte vytvořit nový skript docker-compose.yml, který definuje verzi docker-compose a služby potřebné k nastavení soukromého registru.
Vytvořte nový soubor „docker-compose.yml“ v adresáři „my-registry“ pomocí editoru vi.
$ vi docker-compose.yml
Definujte svou službu v souboru docker-compose jako:
Služby:#registry Registry:Image:Registry:2 Restart:Vždy porty:- "5000:5000" Životní prostředí:Registry_Auth:HTPSWD Registry_Auth_htpasswd_realm:Registry-realm Registry_Auth_htpasswd_path:/Auth/registry.passwd registru_storage_filesystem_rootdirectory:/ myregistrydata:/data - ./auth:/auth sítě: - mynet#Nginx Service nginx: image:nginx:alpine název_kontejneru:nginx restart:dokud nezastaví tty:true :4:4 " - 4 4 " - 4 svazky: - ./nginx/conf.d/:/etc/nginx/conf.d/ - ./nginx/ssl/:/etc/nginx/ssl/ sítě: - mynet#Docker Networksnetworks: mynet: ovladač:bridge Volumesvolumes: myregistrydata: driver:local
Uložte a zavřete soubor
Nastavení přesměrování portu nginx
Potřebujeme vytvořit konfiguraci virtuálního hostitele nginx pro webovou službu nginx. Přejděte do adresáře nginx/conf.d/ vytvořeného ve výše uvedeném kroku.
$ cd nginx/conf.d/
Nyní vytvořte soubor virtuálního hostitele nginx pomocí textového editoru. V tomto příkladu jej pojmenuji myregistry.conf. Můžete mít svůj vlastní předpoklad.
$ vi myregistry.conf
Přidejte následující obsah:
upstream docker-registry { server registry:5000;}server { listen 80; název_serveru registry.linuxtechi.com; return 301 https://registry.linuxtechi.com$request_uri;}server { listen 443 ssl http2; název_serveru registry.linuxtechi.com; ssl_certificate /etc/nginx/ssl/certificate.crt; ssl_certificate_key /etc/nginx/ssl/private.key; # Soubory protokolu pro Debug error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; umístění / { 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 $scheme; proxy_read_timeout 900; }}
Nahraďte název své domény parametrem server_name a uložte soubor.
Zvětšit velikost nahrávaného souboru nginx
Ve výchozím nastavení má nginx pro nahrávání souborů limit 1 MB. Protože obrázky dockerů překračují tento limit, musíte zvětšit velikost nahrávání v konfiguračním souboru nginx. V tomto příkladu vytvořím další konfigurační soubor nginx s limitem pro nahrávání 2 GB.
Přejděte do konfiguračního adresáře nginx
$ cd myregistry/nginx/conf.d$ vi Additional.conf
Přidejte následující řádek a uložte soubor
client_max_body_size 2G;
Konfigurace certifikátu SSL a ověřování
Po vytvoření konfiguračního souboru nginx nyní musíme nastavit certifikát ssl . Měli byste mít platný soubor certifikátu ssl se soukromým klíčem. Zkopírujte soubor certifikátu a soukromý klíč do adresáře nginx/ssl jako:
$ cd myregistry/nginx/ssl$ cp /vaše-ssl-cesta-certifikátu/certificate.crt .$ cp /vaše-soukromá-cesta-klíče/private.key .
Pokud nemáte platný zakoupený ssl certifikát, můžete si vygenerovat vlastní ssl certifikát s vlastním podpisem. Nezapomeňte, že certifikát SSL s vlastním podpisem se nedoporučuje pro produkční prostředí. Chcete-li vygenerovat certifikát ssl s vlastním podpisem, spusťte následující příkaz:
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout \ /etc/ssl/private/nginx-private.key -out /etc/ssl/certs/nginx-certificate.crtBudete požádáni o zadání některých podrobností, jako je kód země, název domény, e-mailové ID. Vyplňte údaje a pokračujte.
Nyní nastavte základní ověřování jako:
Přejděte do adresáře auth
$ cd authPožádejte pro svého uživatele o nový soubor hesel s názvem registry.password. V tomto příkladu použiji uživatele linuxtechi.
$ htpasswd -Bc registry.password linuxtechiPokud se zobrazí „příkaz htpasswd nenalezen“, spusťte ve svém terminálu následující příkaz a zkuste to znovu.
$ sudo apt install apache2-utils -yZadejte silné heslo a potvrďte heslo znovu. Přidali jste základního ověřovacího uživatele pro registr dockerů.
Spusťte registr Docker
Dokončili jste nastavení. Registr můžete vytvořit pomocí příkazu docker-compose.
Přejděte do adresáře, kde vytvoříme soubor docker-compose.yml
$ cd myregistryNyní spusťte následující příkaz:
$ docker-compose up -dRegistr Docker je nyní aktivní, běžící kontejnery můžete ověřit pomocí následujícího příkazu:
$ docker ps -aZískáte následující výstup:
Stáhnout obrázek z Docker Hub do soukromého registru
Chcete-li uložit bitovou kopii z centra Docker do soukromého registru, použijte příkaz docker pull k načtení obrázků dockeru z centra dockeru. V tomto příkladu vytáhnu docker image centos.
$ docker pull centosPo úspěšném stažení obrázků z docker hubu označte obrázek a označte jej pro soukromý registr.
V tomto příkladu označím obrázky centos jako:registry.linuxtechi.com/linuxtechi-centos
$ docker image tag [název obrázku] registry.linuxtechi.com/[new-image-name]
Příklad:
$ tag docker images centos registry.linuxtechi.com/linuxtechi-centosChcete-li zkontrolovat, zda je obraz dockeru lokálně dostupný nebo ne, spusťte následující příkaz.
$ obrázky dockerOdeslání obrazu dockeru do soukromého registru
Stáhli jste obrázek dockeru z centra dockeru a vytvořili značku pro soukromý registr. Nyní musíte odeslat místní bitovou kopii dockeru do soukromého registru.
Nejprve se přihlaste do svého soukromého registru pomocí následujícího příkazu:
Přihlášení $ docker https://registry.linuxtechi.com/v2/Místo „https://registry.linuxtechi.com“
použijte svou vlastní adresu URL registruBudete vyzváni k zadání uživatelského jména a hesla; obdržíte zprávu o úspěšném přihlášení jako:
Nyní můžete poslat svůj docker image do soukromého registru. Chcete-li odeslat obrázek, spusťte následující příkaz:
$ docker push registry.linuxtechi.com/linuxtechi-centosNahraďte název obrázku za „docker push“
Po dokončení push můžete přejít do prohlížeče a zadat adresu URL:
https://registry.linuxtechi.com/v2/_catalog
Nahraďte registry.linuxtechi.com svou vlastní adresou URL a poskytněte základní ověření. Seznam repozitářů najdete jako :
Stahování obrazu dockeru ze soukromého registru
Vložili jste svůj místní docker image do vašeho soukromého registru dockeru. Stejným způsobem můžete stáhnout obrazy dockeru ze soukromého registru dockeru na místní server.
Spuštěním následujícího příkazu se přihlaste k serveru soukromého registru.
Přihlášení $ docker https://registry.linuxtechi.comNahraďte registry.linuxtechi.com svou vlastní adresou URL soukromého registru a poskytněte základní ověřování. Jakmile je přihlášení úspěšné, spusťte následující příkaz a stáhněte obraz dockeru ze soukromého registru. V tomto příkladu vytáhnu dříve vložený obrázek dockeru na místním serveru. Můžete mít svůj vlastní předpoklad pro název obrázku dockeru.
$ docker pull registry.linuxtechi.com/linuxtechi-centosBudete mít výstup podobný jako:
Závěr:
V článku jste se dozvěděli, jak hostovat svůj vlastní soukromý registr dockerů. Také máte představu o tom, jak stáhnout obrázky z docker hubu na místní server, označit obrázek a odeslat do soukromého registru. Také jste se naučili, jak stahovat obrazy dockeru ze soukromého registru na místním serveru.
Přečtěte si také :Jak nainstalovat KVM na Ubuntu 20.04 LTS Server (Focal Fossa)
Jak nainstalovat Ansible AWX na Ubuntu 20.04 LTS Jak nainstalovat Ansible na Ubuntu 20.04 LTS / 21.04Ubuntu