GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

So richten Sie Docker Private Registry unter CentOS 7 / Ubuntu 16.04 / Fedora 26/25 ein

Die Docker-Registrierung ist eine Anwendung, mit der Sie die Docker-Images intern (innerhalb Ihrer Organisation) speichern und verteilen können. Docker hat sogar eine öffentliche Registry namens Docker Hub, die kostenlos Docker-Images speichern kann.

Das Problem mit der öffentlichen Docker-Registrierung besteht jedoch darin, dass die Bilder, die Sie darauf hochladen, öffentlich werden. Das ist nicht das, was Sie oder Ihre Organisation erwarten, wenn Sie viele Stunden gearbeitet haben, um ein Image aufzubauen, und das an die Öffentlichkeit geht.

Um diese Hürde zu überwinden, können Sie privat eine Docker-Registrierung für Ihr Projekt einrichten, sodass nur Sie oder Ihre Organisation die Docker-Images darauf speichern und an Ihre Kollegen verteilen können.

Hier, in diesem technischen Leitfaden, besprechen wir, wie Docker Private Registry auf CentOS 7 eingerichtet wird / Ubuntu 16.04 / Fedora 26/25 .

Infrastruktur

Hostname IP-Adresse Betriebssystem Zweck
registry.itzgeek.local 192.168.12.10 CentOS 7 Fungiert als privater Docker-Registrierungsserver
build.itzgeek.local 192.168.12.20 Ubuntu 16.04 Fungiert als Docker-Engine-Knoten, an dem die Entwickler die Docker-Images entweder mit dockerfile oder docker compose erstellen und diese Images dann auf den obigen privaten Docker-Registrierungsserver hochladen.
deploy.itzgeek.local 192.168.12.30 Fedora 26/25 Fungiert als Docker-Engine-Knoten, wo wir Container bereitstellen, die von einem privaten Registrierungsserver heruntergeladen (Pull) werden.
Hier verwende ich zur Demonstration eine gemischte Umgebung (Betriebssystem). Ich empfehle Ihnen, nur eine homogene Umgebung zu verwenden, in der auftretende Probleme einfach behoben werden können.

Voraussetzungen

Installieren Sie die Docker-Engine auf allen Ihren Knoten und stellen Sie sicher, dass der Docker-Dienst betriebsbereit ist.

LESEN :So installieren Sie Docker CE auf CentOS 7
LESEN :So installieren Sie Docker CE unter Ubuntu 16.04
LESEN :So installieren Sie Docker CE auf Fedora 26/25

Richten Sie die private Docker-Registrierung ein

Melden Sie sich beim Registrierungsknoten an und ziehen Sie das Registrierungs-Image von Docker Hub.

[root@registry ~]# docker pull registry

Wählen Sie, ob Sie mit der einfachen oder der gesicherten Docker-Registrierung arbeiten möchten.

Einfache Docker-Registrierung

[root@registry ~]# docker run -dit -p 5000:5000 --name registry registry

Sichere private Docker-Registrierung

Standardmäßig verwendet der Docker-Knoten eine sichere Verbindung über TLS, um Bilder in die oder aus der privaten Registrierung hoch- oder herunterzuladen. Sie können TLS-Zertifikate verwenden, die von der Zertifizierungsstelle signiert oder auf dem Registrierungsserver selbst signiert sind.

Hier werde ich ein selbstsigniertes Zertifikat zum Sichern der Docker-Registrierung verwenden. Lassen Sie uns mit dem folgenden Befehl ein selbstsigniertes Zertifikat erstellen.

[root@registry ~]# mkdir -p /certs

[root@registry ~]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout /certs/ca.key -x509 -days 365 -out /certs/ca.crt

Generating a 4096 bit RSA private key
............................................++
.....................................................................................................++
writing new private key to '/certs/ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:IN
State or Province Name (full name) []:TN
Locality Name (eg, city) [Default City]:CHN
Organization Name (eg, company) [Default Company Ltd]:ITzGeek
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:registry.itzgeek.local
Email Address []:[email protected]

Ersetzen Sie „registry.itzgeek.local ” mit dem FQDN Ihres Registrierungsservers.

Generiertes Zertifikat „ca.crt“ müssen auf allen Ihren Build-/Deploy-Knoten platziert werden, um diesem Zertifikat zu vertrauen.

Docker-Registrierungscontainer mit Zertifikatinformationen starten.

[root@registry ~]# docker run -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 registry

Jetzt haben Sie einen Registry-Server-Container mit dem Namen „registry “ läuft auf „registry.itzgeek.local “.

[root@registry ~]# docker ps

Ausgabe:

Befehl
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
8641fbc895f5        registry            "/entrypoint.sh /e..."   44 seconds ago      Up 41 seconds       0.0.0.0:5000->5000/tcp   registry

Firewall

Sie müssten die folgenden Ports in der Firewall öffnen, damit die Docker-Registrierung außerhalb des Netzwerks verfügbar ist (zu build.itzgeek.local /deploy.itzgeek.local )

Sie müssen den folgenden Befehl auf dem Docker-Registrierungsserver (registry.itzgeek.local) ausführen, abhängig von Ihrem Betriebssystem.

Wenn Ihre Docker-Registrierung auf CentOS 7 / Fedora 26/25 läuft,

[root@registry ~]# firewall-cmd --permanent --add-port=5000/tcp
[root@registry ~]# firewall-cmd --reload

Wenn sich Ihre Docker-Registrierung auf Ubuntu 16.04 befindet,

root@registry:~# ufw status
root@registry:~# ufw allow 5000/tcp
root@registry:~# ufw reload ufw enable

Jetzt ist die Docker Registry bereit für die Verteilung von Docker-Images.

Erstellen Sie ein Docker-Image und laden Sie es auf einen privaten Registrierungsserver hoch

Melden Sie sich bei Ihrem Build-Docker-Engine-Knoten an, z. „build.itzgeek.local

Erstellen Sie ein Docker-Image

Lassen Sie uns ein Docker-Image (für einen benutzerdefinierten Docker-Container) erstellen, um es auf den privaten Registrierungsserver hochzuladen. Auf drei Arten können Sie Container-Images erstellen/erstellen.

1. Verpflichten
2. Dockerfile
3. Docker Compose.

Erstellen Sie Ihr Docker-Image und halten Sie es für den Upload bereit, indem Sie eine der oben aufgeführten Methoden befolgen.

LESEN :So erstellen Sie Docker-Images mit Docker Commit
LESEN :So erstellen Sie Docker-Images mit DockerFile

Ich habe ein Docker-Image mit dem Namen „mycentos:httpdv1.0“ erstellt “ auf „build.itzgeek.local “ und wir werden es jetzt auf den privaten Registrierungsserver hochladen.

root@build:~# docker images

Ausgabe:

Benennen Sie nun das Docker-Image in etwa um in registryserver:portnumber/image name:tag .

Wenn der Bildname nicht mit dem angegebenen Format übereinstimmt, versucht der Push- oder Pull-Befehl von Docker, das Bild aus der öffentlichen Registrierung hoch- oder herunterzuladen, nicht aus der privaten Registrierung.

Um das Docker-Image umzubenennen, verwenden Sie docker tag Befehl.

root@build:~# docker tag mycentos:httpdv1.0 registry.itzgeek.local:5000/mycentos:httpdv1.0

Suchen Sie erneut nach der Liste der Docker-Images.

Laden Sie ein Docker-Image hoch

Hängt vom Kommunikationsmodus ab (Sicher oder Unsicher ) von Docker Registry, befolgen Sie eine der folgenden Methoden.

Nicht sicher (einfache Http-Registrierung)

Bearbeiten/erstellen Sie die Datei „daemon.json “ in „/etc/docker/ ” Verzeichnis.

root@build:~# vi /etc/docker/daemon.json

Fügen Sie den folgenden Inhalt hinzu.

{
  "insecure-registries" : ["registry.itzgeek.local:5000"]
}

Sicher (selbstsigniert)

Kopieren Sie das Zertifikat „ca.crt “ vom Registrierungsserver „registry.itzgeek.local “ nach „/etc/docker/certs.d/registry.itzgeek.local:5000/ca.crt “ auf „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/

In beiden Fällen müssten Sie den Docker-Engine-Dienst neu starten.

root@build:~# systemctl restart docker

Laden Sie das Docker-Image mit dem folgenden Befehl auf den privaten Registrierungsserver hoch.

root@build:~# docker push registry.itzgeek.local:5000/mycentos:httpdv1.0

Docker-Container-Image vom Private Registry-Server herunterladen und bereitstellen

Melden Sie sich bei Ihrem bereitgestellten Docker-Engine-Knoten an, z. „bereitstellen.itzgeek.local “.

Abhängig vom Kommunikationsmodus (sicher oder nicht sicher) der Docker-Registrierung, befolgen Sie eine der folgenden Methoden.

Nicht sicher (einfache Http-Registrierung)

Bearbeiten/erstellen Sie die Datei „daemon.json “ in „/etc/docker/ ” Verzeichnis.

[root@deploy ~]# vi /etc/docker/daemon.json

Fügen Sie den folgenden Inhalt hinzu.

{
  "insecure-registries" : ["registry.itzgeek.local:5000"]
}

Sicher (Selbstsigniert)

Kopieren Sie das Zertifikat „ca.crt “ vom Registrierungsserver „registry.itzgeek.local “ nach „/etc/docker/certs.d/registry.itzgeek.local:5000/ca.crt “ auf „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/

In beiden Fällen müssten Sie den Docker-Engine-Dienst neu starten.

[root@deploy ~]# systemctl restart docker

Laden Sie das Docker-Image mit dem folgenden Befehl auf den privaten Registrierungsserver herunter.

[root@deploy ~]# docker pull registry.itzgeek.local:5000/mycentos:httpdv1.0

Überprüfen Sie nun die Liste der verfügbaren Images mit „Docker-Images ” Befehl

[root@deploy ~]# docker images

Ausgabe:

Jetzt ist das Docker-Image bereit für die Bereitstellung.

LESEN :So stellen Sie Docker-Container bereit – Befehlszeilenschnittstelle

Das ist alles.


Cent OS
  1. So richten Sie eine private Docker-Registrierung ein und verwenden sie

  2. Anleitung zum Einrichten einer privaten Docker-Registrierung unter Rocky Linux 8

  3. So konfigurieren Sie Autofs unter CentOS 7 / Ubuntu 16.04 / Debian 9 / Fedora 27/26

  4. So richten Sie den SVN-Server unter CentOS, RHEL und Fedora ein

  5. So installieren Sie Docker unter CentOS / RHEL / Fedora

So installieren und konfigurieren Sie Docker Swarm unter CentOS 7 / Ubuntu 16.04 / Fedora 26/25

So installieren Sie Dropbox auf Fedora 27 / Fedora 26/25/24

So installieren Sie Docker unter CentOS

So richten Sie Openshift Origin unter CentOS 8 ein

So installieren Sie Docker unter CentOS 7

So erstellen Sie eine private Docker-Registrierung unter Ubuntu Linux