Registr Docker je část aplikace, která vám umožňuje ukládat a distribuovat obrazy Dockeru interně (v rámci vaší organizace). Docker má dokonce veřejný registr, známý jako Docker Hub, kde lze zdarma ukládat obrázky Docker.
Problém veřejného registru Docker je však v tom, že obrázky, které do něj nahrajete, se stanou veřejnými. To není to, co vy nebo vaše organizace očekáváte, když jste pracovali dlouhé hodiny na budování image a to se zveřejňuje.
Chcete-li tuto překážku překonat, můžete pro svůj projekt soukromě nastavit registr Dockeru, takže pouze vy nebo vaše organizace do něj můžete ukládat obrázky Dockeru a distribuovat je mezi své spolupracovníky.
Zde v této technické příručce probereme, jak nastavit soukromý registr Docker na CentOS 7 / Ubuntu 16.04 / Fedora 26/ 25 .
Infrastruktura

Název hostitele | IP adresa | Operační systém | Účel |
---|---|---|---|
registry.itzgeek.local | 192.168.12.10 | CentOS 7 | Funguje jako server soukromého registru Docker |
build.itzgeek.local | 192.168.12.20 | Ubuntu 16.04 | Funguje jako uzel enginu Docker, kde vývojáři vytvoří obrazy Docker buď pomocí dockerfile nebo docker compose, a poté tyto obrazy nahrají na výše uvedený server soukromého registru docker. |
deploy.itzgeek.local | 192.168.12.30 | Fedora 26/25 | Funguje jako uzel modulu Docker, kde nasazujeme kontejnery stažené (pull) ze serveru soukromého registru. |
Předpoklady
Nainstalujte Docker engine na všechny své uzly a ujistěte se, že služba Docker je v provozu.
ČTĚTE :Jak nainstalovat Docker CE na CentOS 7
ČTĚTE :Jak nainstalovat Docker CE na Ubuntu 16.04
ČTĚTE :Jak nainstalovat Docker CE na Fedoru 26/25
Nastavení soukromého registru Docker
Přihlaste se do uzlu registru a vytáhněte bitovou kopii registru z Docker Hub.
[root@registry ~]# docker pull registr
Vyberte, zda chcete používat prostý nebo zabezpečený registr Docker.
Prostý registr Docker
[root@registry ~]# docker run -dit -p 5000:5000 --name registry registry
Secure Docker Private Registry
Ve výchozím nastavení používá uzel Docker zabezpečené připojení přes TLS k nahrávání nebo stahování obrázků do nebo ze soukromého registru. Můžete použít certifikáty TLS podepsané certifikační autoritou nebo certifikáty s vlastním podpisem na serveru registru.
Zde použiji certifikát s vlastním podpisem pro zabezpečení registru Docker. Pomocí následujícího příkazu vytvoříme certifikát podepsaný svým držitelem.
[root@registry ~]# mkdir -p /certs[root@registry ~]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout /certs/ca.key -x509 -days 365 -out /certs /ca.crtGenerování 4096bitového soukromého klíče RSA............................................ ....++ ................................................. ................................................................... .......++zápis nového soukromého klíče do '/certs/ca.key'-----Budete požádáni o zadání informací, které budou začleněny do vaší žádosti o certifikát. Co se chystáte zadat je to, čemu se říká rozlišující jméno nebo DN. Existuje poměrně málo polí, ale některá můžete nechat prázdná. U některých polí bude výchozí hodnota. Pokud zadáte '.', pole zůstane prázdné.---- -Název země (2 písmenný kód) [XX]:Název státu nebo provincie (celé jméno) []:TNLocality Name (např. město) [Výchozí město]:CHNOrganization Name (např. společnost) [Výchozí společnost Ltd]:ITzGeekOrganizational Unit Jméno (např. sekce) []:ITCommon Name (např. vaše jméno nebo název hostitele vašeho serveru) []:registry.itzgeek.local E-mailová adresa []:[email protected]
Nahraďte „registry.itzgeek.local ” s FQDN vašeho registračního serveru.
Vygenerovaný certifikát „ca.crt“ musí být umístěn na všech vašich uzlech sestavení/nasazení, abyste tomuto certifikátu důvěřovali.
Spusťte kontejner registru Docker s informacemi o certifikátu.
[root@registry ~]# spuštění dockeru -d -p 5000:5000 --restart=always --name registry -v /certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/ca.crt -e REGISTRY_HTTP_TLS_KEY=/ certs/ca.key registr
Nyní máte kontejner serveru registru s názvem „registr “ běžící na „registry.itzgeek.local “.
[root@registry ~]# docker ps
Výstup:
Příkaz ID ID kontejneru vytvořený stavové porty názvy 8641FBC895F5 Registry "/EntryPoint.sh/E ..." 44 sekund před 41 sekundami 0,0.0,0:5000->5000/TCP RegistryFirewall
Aby byl registr Docker dostupný mimo síť, museli byste otevřít následující porty na bráně firewall (na build.itzgeek.local /deploy.itzgeek.local )
Následující příkaz musíte spustit na serveru registru Docker (registry.itzgeek.local), v závislosti na vašem operačním systému.
Pokud je váš registr Docker na CentOS 7 / Fedora 26/25,
[root@registry ~]# firewall-cmd --permanent --add-port=5000/tcp[root@registry ~]# firewall-cmd --reloadPokud je váš registr Docker na Ubuntu 16.04,
root@registry:~# ufw statusroot@registry:~# ufw allow 5000/tcproot@registry:~# ufw reload ufw enableNyní je registr Docker připraven k distribuci obrazů Docker.
Vytvořte a nahrajte obrázek Dockeru na server soukromého registru
Přihlaste se do uzlu enginu build Docker, např. „build.itzgeek.local ”
Vytvoření obrázku Docker
Pojďme vytvořit image Docker (pro přizpůsobený kontejner dockeru) pro nahrání na server soukromého registru. Obrazy kontejneru můžete sestavit/vytvořit třemi způsoby.
1. Zavázat se
2. Dockerfile
3. Docker Compose.Vytvořte a udržujte svůj obrázek dockeru připravený k nahrání pomocí jedné z výše uvedených metod.
ČTĚTE :Jak vytvářet obrazy Docker pomocí Docker Commit
ČTĚTE :Jak vytvořit obrázky Docker pomocí DockerFileVytvořil jsem obrázek dockeru s názvem „mycentos:httpdv1.0 “ na „build.itzgeek.local “ a nyní jej nahrajeme na server soukromého registru.
root@build:~# ukotvitelných obrázkůVýstup:
![]()
Nyní přejmenujte obrázek dockeru něco jako
registryserver:portnumber/image name:tag
.Pokud název obrázku neodpovídá danému formátu, příkaz docker push nebo pull se pokusí obrázek nahrát nebo stáhnout z veřejného registru, nikoli ze soukromého registru.
Chcete-li přejmenovat obrázek dockeru, použijte
docker tag
příkaz.root@build:~# tag docker mycentos:httpdv1.0 registry.itzgeek.local:5000/mycentos:httpdv1.0Zkontrolujte znovu seznam obrázků Docker.
![]()
Nahrát obrázek Docker
Závisí na režimu komunikace (Zabezpečené nebo Nezabezpečené ) z registru Docker, postupujte podle jedné z níže uvedených metod.
Nezabezpečený (prostý registr HTTP)
Upravte/vytvořte soubor „daemon.json “ v „/etc/docker/ ” adresář.
root@build:~# vi /etc/docker/daemon.jsonPřidejte do něj následující obsah.
{ "insecure-registries" :["registry.itzgeek.local:5000"]}Zabezpečené (s vlastním podpisem)
Zkopírujte certifikát „ca.crt “ ze serveru registru „registry.itzgeek.local “ na „/etc/docker/certs.d/registry.itzgeek.local:5000/ca.crt “ na „build.itzgeek.local “.
root@build:~# mkdir -p /etc/docker/certs.d/registry.itzgeek.local:5000/root@build:~# scp -pr [email protected]:/certs/ca .crt /etc/docker/certs.d/registry.itzgeek.local:5000/V obou případech budete muset restartovat službu Docker engine.
root@build:~# systemctl restart dockerNahrajte obraz dockeru na server soukromého registru pomocí následujícího příkazu.
root@build:~# docker push registry.itzgeek.local:5000/mycentos:httpdv1.0Stáhněte a nasaďte image kontejneru Docker ze serveru soukromého registru
Přihlaste se do uzlu enginu nasazení Docker, např. „deploy.itzgeek.local “.
V závislosti na režimu komunikace (zabezpečený nebo nezabezpečený) registru Docker použijte některou z níže uvedených metod.
Nezabezpečený (prostý registr HTTP)
Upravte/vytvořte soubor „daemon.json “ v „/etc/docker/ ” adresář.
[root@deploy ~]# vi /etc/docker/daemon.jsonPřidejte do něj následující obsah.
{ "insecure-registries" :["registry.itzgeek.local:5000"]}Zabezpečené (s vlastním podpisem)
Zkopírujte certifikát „ca.crt “ ze serveru registru „registry.itzgeek.local “ na „/etc/docker/certs.d/registry.itzgeek.local:5000/ca.crt “ na „deploy.itzgeek.local “.
[root@deploy ~]# mkdir -p /etc/docker/certs.d/registry.itzgeek.local:5000/[root@deploy ~]# scp -pr [email protected]:/certs /ca.crt /etc/docker/certs.d/registry.itzgeek.local:5000/V obou případech budete muset restartovat službu Docker engine.
[root@deploy ~]# systemctl restart dockerStáhněte bitovou kopii dockeru na server soukromého registru pomocí následujícího příkazu.
[root@deploy ~]# docker pull registry.itzgeek.local:5000/mycentos:httpdv1.0Nyní zkontrolujte seznam dostupných obrázků pomocí „obrázků dockeru ”příkaz
[root@deploy ~]# obrázky dockeruVýstup:
![]()
Nyní je obraz Dockeru připraven k nasazení.
ČTĚTE :Jak nasadit kontejnery Docker – rozhraní příkazového řádku
To je vše.
Jak nainstalovat Zabbix Server 5.0 / 4.0 na CentOS 7 / RHEL 7 Jak nainstalovat a nakonfigurovat Docker Swarm na CentOS 7 / Ubuntu 16.04 / Fedora 26/25Cent OS