Docker5 - Vollfunktionaler Hafenlager-Bauprozess

Docker5 - Vollfunktionaler Hafenlager-Bauprozess

Harbor ist ein Registry-Server auf Unternehmensebene zum Speichern und Verteilen von Docker-Images. Er kann zum Aufbau eines unternehmensweiten Docker-Image-Repositorys verwendet werden. Basierend auf der Open-Source-Projektverteilung von Docker fügt es einige von Unternehmen benötigte Funktionsmerkmale hinzu, wie etwa die Replikation von Bildsynchronisierungen, das Scannen von Schwachstellen und die Berechtigungsverwaltung. Harbor ist ein von VMware als Open Source bereitgestelltes Docker Registry-Verwaltungsprojekt auf Unternehmensebene. Es umfasst Funktionen wie Berechtigungsverwaltung (RBAC), LDAP, Protokollprüfung, Verwaltungsschnittstelle, Selbstregistrierung, Bildreplikation und chinesische Unterstützung.

Erstellen Sie ein voll funktionsfähiges Repository, das anonyme Pulls unterstützt

[root@server1 mnt]# cd komponieren/
[root@server1 verfassen]# ls
docker-compose-Linux-x86_64-1.16.1 docker-compose-Linux-x86_64-1.24.1
docker-compose-Linux-x86_64-1.22.0 docker-compose-Linux-x86_64-1.27.0
[root@server1 komponieren]# mv docker-compose-Linux-x86_64-1.27.0 /usr/local/bin/docker-compose
[root@server1 verfassen]# chmod +x /usr/local/bin/docker-compose
[root@server1 mnt]# tar zxf harbor-offline-installer-v1.10.1.tgz

Abhängigkeiten auflösen und Harbor entpacken

vim harbor.yml

Im Hafenverzeichnis

Bildbeschreibung hier einfügen

Der Speicherort der Authentifizierung und des Schlüssels muss korrekt geschrieben werden

./install.sh

Skriptinstallation ausführen

Redis erstellen ... fertig
Erstellen von Harbour-Core ... fertig
Nginx erstellen ... fertig
Erstellen von harbour-jobservice ... fertig
✔ ----Harbor wurde erfolgreich installiert und gestartet.----

Erledigt

[root@server1 hafen]# docker-compose

Der Befehl docker-compose muss im Verzeichnis harbor ausgeführt werden

[root@server1 hafen]# docker-compose start
[root@server1 Hafen]# docker-compose ps
      Name Befehl Status Ports                                  
--------------------------------------------------------------------------------------------------------------------------------------------
harbor-core /harbor/harbor_core Aktiv (fehlerhaft)                                                                           
harbor-db /docker-entrypoint.sh Aktiv (fehlerfrei) 5432/tcp                                                                
harbor-jobservice /harbor/harbor_jobservice ... Up (fehlerhaft)                                                                           
harbor-log /bin/sh -c /usr/local/bin/ ... Aktiv (fehlerhaft) 127.0.0.1:1514->10514/tcp                                               
Harbor-Portal nginx -g Daemon aus; Aktiv (fehlerhaft) 8080/tcp                                                                
nginx nginx -g Daemon aus; Aktiv (fehlerfrei) 0.0.0.0:80->8080/tcp,:::80->8080/tcp,                                   
                                                                    0.0.0.0:443->8443/tcp,:::443->8443/tcp                                  
redis redis-server /etc/redis.conf Aktiv (fehlerfrei) 6379/tcp                                                                
Registrierung /home/harbor/entrypoint.sh Aktiv (fehlerhaft) 5000/tcp                                                                
registryctl /home/harbor/start.sh Aktiv (fehlerfrei)

Stellen Sie sicher, dass die Spiegel aktiv sind und geben Sie die IP-Adresse direkt im Browser ein

Bildbeschreibung hier einfügen

Benutzer admin, Passwort yume

Bildbeschreibung hier einfügen

[root@server1 docker]# docker logout reg.westos.org
Entfernen der Anmeldeinformationen für reg.westos.org
[root@server1 docker]# docker login reg.westos.org
Benutzername: admin
Passwort: 
WARNUNG! Ihr Passwort wird unverschlüsselt in /root/.docker/config.json gespeichert.
Konfigurieren Sie einen Credential Helper, um diese Warnung zu entfernen. Siehe
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Anmeldung erfolgreich

Melden Sie sich von der vorherigen Anmeldung ab und erneut an. Dies sind die in der Datenbank gespeicherten Informationen.
Es wurde nicht lokal erstellt.

[root@server1 docker]# docker tag yakexi007/game2048:latest reg.westos.org/library/game2048:latest
[root@server1 docker]# docker push reg.westos.org/library/game2048:latest  
Der Push bezieht sich auf das Repository [reg.westos.org/library/game2048]
88fca8ae768a: Geschoben 
6d7504772167: Geschoben 
192e9fad2abc: Geschoben 
36e9226e74f8: Geschoben 
011b303988d2: Gedrückt 
zuletzt: Digest: sha256:8a34fb9cb168c420604b6e5d32ca6d412cb0d533a826b313b190535c03fe9390 Größe: 1364

Ins Lager hochladen und ansehen

Bildbeschreibung hier einfügen

[root@server2 docker]# cat daemon.json 
{
  "Registrierungsspiegel": ["https://reg.westos.org"]
}

Im Server2 wurde auf das private Lager verwiesen

Registrierung: https://index.docker.io/v1/
 Beschriftungen:
 Experimentell: falsch
 Unsichere Register:
  127.0.0.0/8
 Registrierungsspiegel:
  https://reg.westos.org/
 Live-Wiederherstellung aktiviert: false

Und es ist effektiv, die Adressauflösung in Server2 durchzuführen

Bildbeschreibung hier einfügen

[root@server2 docker]# docker pull reg.westos.org/library/game2048:latest
aktuell: Aus Bibliothek/Game2048 ziehen
534e72e7cedc: Ziehen abgeschlossen 
f62e2f6dfeef: Ziehen abgeschlossen 
fe7db6293242: Ziehen abgeschlossen 
3f120f6a2bf8: Ziehen abgeschlossen 
4ba4e6930ea5: Ziehen abgeschlossen 
Digest: sha256:8a34fb9cb168c420604b6e5d32ca6d412cb0d533a826b313b190535c03fe9390
Status: Neueres Image für reg.westos.org/library/game2048:latest heruntergeladen
reg.westos.org/library/game2048:latest

Das von Server1 gepushte Bild wurde erfolgreich auf Server2 heruntergeladen

Bildbeschreibung hier einfügen

Aus dem Protokoll ist ersichtlich, dass anonyme Benutzer

[root@server1 docker]# docker tag yakexi007/nginx:latest reg.westos.org/library/nginx:latest
[root@server1 docker]# docker push reg.westos.org/library/nginx
Der Push bezieht sich auf das Repository [reg.westos.org/library/nginx]
3bd8699f28ba: Geschoben 
1d3b68b6972f: Geschoben 
de1602ca36c9: Geschoben 
zuletzt: Digest: sha256:5ea5a786e978abd8e6e0b6c0f37f7271be19c40d6b8247b1d9dae70c1fbab9eb Größe: 949

Laden Sie erneut ein Nginx-Image auf Server1 hoch.

Bildbeschreibung hier einfügen

Sie können sehen

[root@server2 docker]# docker pull nginx
Standard-Tag verwenden: latest
aktuellste: Aus Bibliothek/nginx ziehen
cfb92865f5ba: Ziehen abgeschlossen 
8dd350b5e0d5: Ziehen abgeschlossen 
15157df2751c: Ziehen abgeschlossen 
Zusammenfassung: sha256:5ea5a786e978abd8e6e0b6c0f37f7271be19c40d6b8247b1d9dae70c1fbab9eb
Status: Neueres Image für nginx:latest heruntergeladen
docker.io/library/nginx:latest

Server2 zieht nginx erneut, fertig
2. Verwenden Sie das Harbor-Repository, einige grundlegende Anweisungen

[root@server1-Hafen]# Docker-Compose-Protokolle

Protokolle anzeigen

[root@server1 hafen]# docker-compose stop

Ein Lager deaktivieren
3. Lager pflegen (Lagermodul hinzufügen: automatisches Bildscannen, Signaturfunktion)
Stoppen Sie zuerst das Lager

[root@server1 Hafen]# docker-compose rm

Löschen Sie alle Container. Fügen Sie als Nächstes die Harbor-Funktion hinzu. Lesen Sie die Hilfe des Installationsskripts. Sie können drei Module sehen: Image Vulnerability Scanning, Content Trust und Remote Login. Fügen Sie den Modulnamen nach dem Installationsskript hinzu. Nach der Neuinstallation werden diese Modulfunktionen aktiviert.

[root@server1 hafen]# ./install.sh --help

Hinweis: Bitte legen Sie zuerst den Hostnamen und andere notwendige Attribute in harbor.yml fest. Verwenden Sie NICHT localhost oder 127.0.0.1 als Hostnamen, da Harbor von externen Clients aufgerufen werden muss.
Bitte setzen Sie --with-notary, wenn Notary in Harbor aktiviert werden muss, und setzen Sie ui_url_protocol/ssl_cert/ssl_cert_key in harbor.yml, da Notary unter https ausgeführt werden muss. 
Bitte setzen Sie --with-clair, falls Clair in Harbor aktiviert werden muss
Bitte setzen Sie --with-chartmuseum, wenn Chartmuseum in Harbor aktiviert werden muss
[root@server1 hafen]# ./install.sh --with-notary --with-clair --with-chartmuseum
[Schritt 5]: Harbor starten ...
Erstellen des Netzwerks „harbor_harbor-clair“ mit dem Standardtreiber
Erstellen des Netzwerks „harbor_harbor-notary“ mit dem Standardtreiber
Netzwerk „harbor_harbor-chartmuseum“ mit dem Standardtreiber erstellen
Netzwerk „harbor_notary-sig“ mit dem Standardtreiber erstellen
Hafenlog erstellen ... fertig
Registrierung erstellen ... fertig
Harbor-DB wird erstellt ... fertig
Registryctl erstellen ... fertig
Redis erstellen ... fertig
Chartmuseum erstellen ... fertig
Hafenportal erstellen ... fertig
Erstellen von Harbour-Core ... fertig
Notar-Unterzeichner erstellen ... fertig
Erstellen von Clair ... fertig
Clair-Adapter erstellen ... fertig
Notar-Server erstellen ... fertig
Nginx erstellen ... fertig
Erstellen von harbour-jobservice ... fertig
✔ ----Harbor wurde erfolgreich installiert und gestartet.----
[root@server1 Hafen]# docker-compose ps
      Name Befehl Status Ports                             
--------------------------------------------------------------------------------------------------------------------------------------------
chartmuseum ./docker-entrypoint.sh Up (Gesundheit: wird gestartet) 9999/tcp                                                       
clair ./docker-entrypoint.sh Up (Gesundheit: wird gestartet) 6060/tcp, 6061/tcp                                             
clair-adapter /clair-adapter/clair-adapter Up (Gesundheit: wird gestartet) 8080/tcp                                                       
harbor-core /harbor/harbor_core Up (Gesundheit: wird gestartet)                                                                  
harbor-db /docker-entrypoint.sh Aktiv (Gesundheit: wird gestartet) 5432/tcp                                                       
harbor-jobservice /harbor/harbor_jobservice ... Up (Gesundheit: wird gestartet)                                                                  
harbor-log /bin/sh -c /usr/local/bin/ ... Up (Gesundheit: wird gestartet) 127.0.0.1:1514->10514/tcp                                      
Harbor-Portal nginx -g Daemon aus; Aktiv (Gesundheit: wird gestartet) 8080/TCP                                                       
nginx nginx -g Daemon aus; Aktiv (Gesundheit: wird gestartet) 0.0.0.0:4443->4443/tcp,:::4443->4443/tcp,                      
                                                                             0.0.0.0:80->8080/tcp,:::80->8080/tcp,                          
                                                                             0.0.0.0:443->8443/tcp,:::443->8443/tcp                         
notary-server /bin/sh -c migrate-patch - ... Nach oben                                                                                     
notary-signer /bin/sh -c migrate-patch - ... Nach oben                                                                                     
redis redis-server /etc/redis.conf Aktiv (Gesundheit: wird gestartet) 6379/tcp                                                       
Registrierung /home/harbor/entrypoint.sh Aktiv (Gesundheit: wird gestartet) 5000/tcp                                                       
registryctl /home/harbor/start.sh Up (Gesundheit: wird gestartet)

Benutzen Sie ps zur Überprüfung und Sie werden einige weitere Funktionen finden, um sich bei 172.25.250.11 anzumelden

Bildbeschreibung hier einfügen
Bildbeschreibung hier einfügen

Diese waren vor der Neuinstallation nicht vorhanden.

--mit-Notar --mit-Clair --mit-Chartmuseum
Dabei handelt es sich um Inhaltsvertrauen, Bildscannen und Diagrammbibliothek. Wenn Sie die Bildinformationen im Browser anzeigen, können Sie sehen, dass auf das Bild Scannen, Signaturen und andere Informationen folgen. Da die Bildscan- und Signaturfunktionen bei der Konfiguration dieses Verzeichnisses nicht aktiviert sind, ist das aktuell angezeigte Bild ungescannt und unsigniert.

Bildbeschreibung hier einfügen

Wie scanne ich Bilder automatisch?

Bildbeschreibung hier einfügen

Wählen Sie „Zum Speichern daran denken und es erneut versuchen“ und laden Sie ein Bild erneut hoch.

[root@server1 harbor]# Docker-Tag rhel7:latest reg.westos.org/library/rhel7:latest

Verwenden Sie dieses Mal das Rhel7-Image und ändern Sie zuerst den Namen.

[root@server1 Hafen]# docker push reg.westos.org/library/rhel7:latest 
Der Push bezieht sich auf das Repository [reg.westos.org/library/rhel7]
18af9eb19b5f: Geschoben 
zuletzt: Digest: sha256:58cd9120a4194edb0de4377b71bd564953255a1422baa1bbd9cb23d521c6873b Größe: 528

Zum Hafen hochladen

Bildbeschreibung hier einfügen

Als ich den Browser öffnete, stellte ich fest, dass er automatisch gescannt wurde.

Wie implementiere ich die Bildsignierfunktion?

Bildbeschreibung hier einfügen

Wenn Content Trust ausgewählt ist, versuchen Sie, das gerade hochgeladene Rhel7-Image auf Server2 abzurufen.

[root@server2 ~]# docker pull rhel7
Standard-Tag verwenden: latest
Fehlerantwort vom Daemon: Pull-Zugriff für Rhel7 verweigert, Repository existiert nicht oder erfordert möglicherweise „Docker-Login“: verweigert: angeforderter Zugriff auf die Ressource wurde verweigert

Wenn Sie Content Trust deaktivieren, können Sie normal abrufen, da Content Trust im Repository aktiviert ist. Der Client kann nur signierte Images herunterladen, aber das Debian-Image im Repository ist nicht signiert. Daher schlägt das Abrufen durch den Client fehl.
Obwohl der Pull des Harbor-Repositorys fehlgeschlagen ist, zieht das System das Bild automatisch aus dem Internet (jetzt in einer Offline-Umgebung, daher tritt der obige Fehler auf).

Jetzt müssen wir die Signatur des vertrauenswürdigen Images autorisieren. Löschen Sie zunächst das zuvor hochgeladene Image in der Weboberfläche. Legen Sie für das Image ohne Signatur zwei Umgebungsvariablen auf dem Docker-Server fest. Anschließend können wir die Content Trust-Funktion verwenden, um das hochgeladene Image zu signieren.
(1) Root-Zertifikat bereitstellen

[root@server1 Hafen]# docker-compose ps
      Name Befehl Status Ports                                  
--------------------------------------------------------------------------------------------------------------------------------------------
chartmuseum ./docker-entrypoint.sh Aktiv (fehlerfrei) 9999/tcp                                                                
clair ./docker-entrypoint.sh Aktiv (fehlerhaft) 6060/tcp, 6061/tcp                                                      
clair-adapter /clair-adapter/clair-adapter Aktiv (fehlerhaft) 8080/tcp                                                                
harbor-core /harbor/harbor_core Aktiv (fehlerhaft)                                                                           
harbor-db /docker-entrypoint.sh Aktiv (fehlerfrei) 5432/tcp                                                                
harbor-jobservice /harbor/harbor_jobservice ... Up (gesund)                                                                           
harbor-log /bin/sh -c /usr/local/bin/ ... Aktiv (fehlerhaft) 127.0.0.1:1514->10514/tcp                                               
Harbor-Portal nginx -g Daemon aus; Aktiv (fehlerhaft) 8080/tcp                                                                
nginx nginx -g Daemon aus; Aktiv (fehlerfrei) 0.0.0.0:4443->4443/tcp,:::4443->4443/tcp,                               
                                                                    0.0.0.0:80->8080/tcp,:::80->8080/tcp,                                   
                                                                    0.0.0.0:443->8443/tcp,:::443->8443/tcp                                  
notary-server /bin/sh -c migrate-patch - ... Nach oben                                                                                     
notary-signer /bin/sh -c migrate-patch - ... Nach oben                                                                                     
redis redis-server /etc/redis.conf Aktiv (fehlerfrei) 6379/tcp                                                                
Registrierung /home/harbor/entrypoint.sh Aktiv (fehlerhaft) 5000/tcp                                                                
registryctl /home/harbor/start.sh Aktiv (fehlerfrei)

Port 4443 wird zum Signieren verwendet

[root@server1 hafen]# export DOCKER_CONTENT_TRUST=1
[root@server1 Hafen]# export DOCKER_CONTENT_TRUST_SERVER=https://reg.westos.org:4443

(2) Docker Content Trust aktivieren

[root@server1 Hafen]# docker push reg.westos.org/library/nginx:latest
Der Push bezieht sich auf das Repository [reg.westos.org/library/nginx]
3bd8699f28ba: Ebene existiert bereits 
1d3b68b6972f: Ebene existiert bereits 
de1602ca36c9: Ebene existiert bereits 
zuletzt: Digest: sha256:5ea5a786e978abd8e6e0b6c0f37f7271be19c40d6b8247b1d9dae70c1fbab9eb Größe: 949
Signieren und Übertragen von Vertrauensmetadaten
Fehler: Fehler beim Kontaktieren des Notarservers: x509: Zertifikat von unbekannter Behörde signiert

Es muss „Latest“ hinzugefügt werden, was auf eine aktualisierte Version hinweist. (3) Beim erneuten Hochladen ist ein Fehler aufgetreten. Im versteckten Verzeichnis .docker befindet sich kein Zertifikat. Erstellen Sie ein Zertifikatverzeichnis tls. Erstellen Sie nach dem Aufrufen des Verzeichnisses ein Verzeichnis mit demselben Namen wie der Container, reg.westos.org:4443.
Kopieren Sie das zuvor generierte Zertifikat in dieses Verzeichnis

[root@server1 ~]# cd .docker/
[root@server1 .docker]# ls
config.json Vertrauen
[root@server1 .docker]# mkdir tls
[root@server1 .docker]# cd tls/
[root@server1 tls]# mkdir reg.westos.org:4443
[root@server1 tls]# cd reg.westos.org\:4443/
[root@server1 reg.westos.org:4443]# cp /docker /
.autorelabel Daten/ etc/ lib64/ opt/ run/ sys/ var/          
bin/ dev/ home/ media/ proc/ sbin/ tmp/          
boot/ docker lib/ mnt/ root/ srv/ usr/          
[root@server1 reg.westos.org:4443]# cp /root/data/certs/westos.org.crt ca.crt
[root@server1 reg.westos.org:4443]# ls
ca.crt

(4) Versuchen Sie den Upload erneut

[root@server1 Hafen]# docker push reg.westos.org/library/nginx:latest 
Der Push bezieht sich auf das Repository [reg.westos.org/library/nginx]
3bd8699f28ba: Ebene existiert bereits 
1d3b68b6972f: Ebene existiert bereits 
de1602ca36c9: Ebene existiert bereits 
zuletzt: Digest: sha256:5ea5a786e978abd8e6e0b6c0f37f7271be19c40d6b8247b1d9dae70c1fbab9eb Größe: 949
Signieren und Übertragen von Vertrauensmetadaten
Sie sind dabei, eine neue Passphrase für den Root-Signaturschlüssel zu erstellen. Diese Passphrase
wird verwendet, um den sensibelsten Schlüssel in Ihrem Signatursystem zu schützen. Bitte
Wählen Sie eine lange, komplexe Passphrase und achten Sie darauf, das Passwort und die
Die Schlüsseldatei selbst ist sicher und gesichert. Es wird dringend empfohlen, dass Sie eine
Passwort-Manager, um die Passphrase zu generieren und sicher aufzubewahren. Es wird keine
Möglichkeit, diesen Schlüssel wiederherzustellen. Sie finden den Schlüssel in Ihrem Konfigurationsverzeichnis.
Geben Sie die Passphrase für den neuen Root-Schlüssel mit der ID dbac0cb ein: 
Die Passphrase ist zu kurz. Verwenden Sie bitte einen Passwort-Manager, um eine gute, zufällige Passphrase zu generieren und zu speichern.
Geben Sie die Passphrase für den neuen Root-Schlüssel mit der ID dbac0cb ein: 
Die Passphrase ist zu kurz. Verwenden Sie bitte einen Passwort-Manager, um eine gute, zufällige Passphrase zu generieren und zu speichern.
Geben Sie die Passphrase für den neuen Root-Schlüssel mit der ID dbac0cb ein: 
Die Passphrase ist zu kurz. Verwenden Sie bitte einen Passwort-Manager, um eine gute, zufällige Passphrase zu generieren und zu speichern.
Geben Sie die Passphrase für den neuen Root-Schlüssel mit der ID dbac0cb ein: 
Die Passphrase ist zu kurz. Verwenden Sie bitte einen Passwort-Manager, um eine gute, zufällige Passphrase zu generieren und zu speichern.
Geben Sie die Passphrase für den neuen Root-Schlüssel mit der ID dbac0cb ein: 
Wiederholen Sie die Passphrase für den neuen Root-Schlüssel mit der ID dbac0cb: 
Geben Sie die Passphrase für den neuen Repository-Schlüssel mit der ID a868e96 ein: 
Wiederholen Sie die Passphrase für den neuen Repository-Schlüssel mit der ID a868e96: 
Initialisierung von „reg.westos.org/library/nginx“ abgeschlossen
Erfolgreich signiert reg.westos.org/library/nginx:latest

Nach der Lösung des Problems lädt der Server das Bild erneut hoch. Um ein neues Bild erfolgreich hochzuladen, muss der Administrator den Stammschlüssel und den Lagerschlüssel festlegen.
(Beachten Sie, dass Sie jedes Mal, wenn Sie eine andere Version des Bildes hochladen, nur den entsprechenden Lagerschlüssel und nicht den Stammschlüssel eingeben müssen.)
Nachdem Sie es eingerichtet haben, rufen Sie die Weboberfläche auf, um zu überprüfen, ob die Signatur des hochgeladenen Bildes als erfolgreich angezeigt wird.

Bildbeschreibung hier einfügen

Unterzeichnet, muss neuestes hinzufügen

[root@server2 ~]# docker pull nginx
Standard-Tag verwenden: latest
aktuellste: Aus Bibliothek/nginx ziehen
cfb92865f5ba: Ziehen abgeschlossen 
8dd350b5e0d5: Ziehen abgeschlossen 
15157df2751c: Ziehen abgeschlossen 
Zusammenfassung: sha256:5ea5a786e978abd8e6e0b6c0f37f7271be19c40d6b8247b1d9dae70c1fbab9eb
Status: Neueres Image für nginx:latest heruntergeladen
docker.io/library/nginx:latest

Das Herunterladen des signierten Images auf Server2 ist problemlos möglich. Wenn es nicht signiert ist und Content Trust aktiviert ist, funktioniert es trotzdem nicht. Versuchen Sie es noch einmal, löschen Sie zuerst 2048 aus dem Hafen, löschen Sie dann das zuvor heruntergeladene 2048-Image auf Server2 und laden Sie es erneut herunter. Es wird ein Fehler gemeldet.

[root@server2 ~]# docker pull game2048
Standard-Tag verwenden: latest
Fehlerantwort vom Daemon: Pull-Zugriff für game2048 verweigert, Repository existiert nicht oder erfordert möglicherweise „Docker-Login“: verweigert: angeforderter Zugriff auf die Ressource wurde verweigert

Dann pusht server1 wieder 2048

[root@server1 Hafen]# docker push reg.westos.org/library/game2048:latest 
Der Push bezieht sich auf das Repository [reg.westos.org/library/game2048]
88fca8ae768a: Ebene existiert bereits 
6d7504772167: Ebene existiert bereits 
192e9fad2abc: Ebene existiert bereits 
36e9226e74f8: Ebene existiert bereits 
011b303988d2: Ebene existiert bereits 
zuletzt: Digest: sha256:8a34fb9cb168c420604b6e5d32ca6d412cb0d533a826b313b190535c03fe9390 Größe: 1364
Signieren und Übertragen von Vertrauensmetadaten
Geben Sie die Passphrase für den Root-Schlüssel mit der ID dbac0cb ein: 
Geben Sie die Passphrase für den neuen Repository-Schlüssel mit der ID 18c8514 ein: 
Passphrase für neuen Repository-Schlüssel mit der ID 18c8514 wiederholen: 
Initialisierung von „reg.westos.org/library/game2048“ abgeschlossen
Erfolgreich signiert reg.westos.org/library/game2048:latest 

Bildbeschreibung hier einfügen

Bereits signiert, Server2 zieht erneut

[root@server2 ~]# docker pull game2048
Standard-Tag verwenden: latest
aktuell: Aus Bibliothek/Game2048 ziehen
534e72e7cedc: Ziehen abgeschlossen 
f62e2f6dfeef: Ziehen abgeschlossen 
fe7db6293242: Ziehen abgeschlossen 
3f120f6a2bf8: Ziehen abgeschlossen 
4ba4e6930ea5: Ziehen abgeschlossen 
Digest: sha256:8a34fb9cb168c420604b6e5d32ca6d412cb0d533a826b313b190535c03fe9390
Status: Neueres Image für game2048:latest heruntergeladen
docker.io/library/game2048:latest

Erledigt

4. Gastbenutzer greifen auf nicht offengelegte Repositories zu
(1) Neues Projekt anlegen

Bildbeschreibung hier einfügen

[root@server1 hafen]# export DOCKER_CONTENT_TRUST=0

Deaktivieren Sie das Content Trust, sonst gibt es Ärger

[root@server1 harbor]# Docker-Tag reg.westos.org/library/game2048:latest reg.westos.org/haoge/game2048:latest
[root@server1-Hafen]# Docker Push reg.westos.org/haoge/game2048

Laden Sie ein 2048-Bild für das neue Projekt Haoge erneut hoch

Bildbeschreibung hier einfügen

[root@server2 ~]# docker pull reg.westos.org/haoge/game2048:latest
Fehlerantwort vom Daemon: Pull-Zugriff für reg.westos.org/haoge/game2048 verweigert, Repository existiert nicht oder erfordert möglicherweise „Docker-Login“: verweigert: angeforderter Zugriff auf die Ressource wurde verweigert

Server2 zieht 2048 von haoge, meldet einen Fehler, muss sich anmelden

Bildbeschreibung hier einfügen

Neuen Benutzer anlegen

Bildbeschreibung hier einfügen

Geben Sie dem Benutzer wqh im haoge-Projekt eine Gastidentität

[root@server2 ~]# Docker-Login reg.westos.org
Benutzername: wqh
Passwort: 
WARNUNG! Ihr Passwort wird unverschlüsselt in /root/.docker/config.json gespeichert.
Konfigurieren Sie einen Credential Helper, um diese Warnung zu entfernen. Siehe
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Anmeldung erfolgreich

server2-Anmeldung wqh
Nochmal ziehen

[root@server2 ~]# docker pull reg.westos.org/haoge/game2048:latest
aktuell: Abrufen von haoge/game2048
Digest: sha256:8a34fb9cb168c420604b6e5d32ca6d412cb0d533a826b313b190535c03fe9390
Status: Neueres Image für reg.westos.org/haoge/game2048:latest heruntergeladen
reg.westos.org/haoge/game2048:latest
[root@server2 ~]# Docker-Bilder 
REPOSITORY TAG BILD ID ERSTELLT GRÖSSE
nginx latest 2560dbd4ee1e vor 14 Monaten 31,1 MB
game2048 latest 19299002fdbe vor 4 Jahren 55.5MB
reg.westos.org/haoge/game2048 latest 19299002fdbe vor 4 Jahren 55,5 MB

Kein Problem, aber Push ist nicht zulässig, da Besucher keine Berechtigung haben.

Bildbeschreibung hier einfügen

Das Protokoll zeigt, dass wqh gerade einen Spiegel gezogen hat und schließlich:
Entfernen Sie Bildscan- und Signaturfunktionen, die den Festplattenverbrauch beschleunigen (Scannen beschleunigt den Festplattenverbrauch)
(Für nachfolgende Experimente ist kein Scannen und Signieren des Bildes mehr erforderlich)

[root@server1 hafen]# docker-compose stop
Harbor-Jobservice wird gestoppt ... fertig
Nginx wird gestoppt ... fertig
Notarserver wird gestoppt ... fertig
Clair-Adapter wird gestoppt ... fertig
Notar-Unterzeichner stoppen ... erledigt
Clair stoppen ... erledigt
Harbor-Core wird gestoppt ... erledigt
Chartmuseum wird gestoppt ... erledigt
Hafenportal wird gestoppt ... erledigt
Redis wird gestoppt ... fertig
Registryctl wird gestoppt ... fertig
Harbor-DB wird gestoppt ... fertig
Registrierung wird gestoppt ... fertig
Hafenprotokoll stoppen ... erledigt
[root@server1 Hafen]# docker-compose rm
Ich werde Harbor-Jobservice, Nginx, Notary-Server, Clair-Adapter, Notary-Signer, Clair, Harbor-Core, Chartmuseum, Harbor-Portal, Redis, Registryctl, Harbor-DB, Registry, Harbor-Log entfernen.
Bist du sicher? [yN] y
Harbor-Jobservice wird entfernt ... fertig
Nginx wird entfernt ... fertig
Notarserver wird entfernt ... fertig
Clair-Adapter entfernen ... fertig
Notarunterzeichner entfernen ... fertig
Clair entfernen ... fertig
Harbor-Core wird entfernt ... fertig
Chartmuseum wird entfernt ... fertig
Hafenportal entfernen ... fertig
Redis wird entfernt ... fertig
Registryctl wird entfernt ... fertig
Harbor-DB wird entfernt ... fertig
Registrierung entfernen ... fertig
Hafenprotokoll entfernen ... fertig
[root@server1 hafen]# ./install.sh --with-chartmuseum 

[Schritt 0]: Überprüfen, ob Docker installiert ist …

Hinweis: Docker-Version: 19.03.15

[Schritt 1]: Überprüfen, ob Docker-Compose installiert ist …

Hinweis: Docker-Compose-Version: 1.27.0

[Schritt 2]: Harbor-Bilder werden geladen ...
Geladenes Bild: goharbor/clair-adapter-photon:v1.0.1-v1.10.1
Geladenes Bild: goharbor/harbor-jobservice:v1.10.1
Geladenes Bild: goharbor/redis-photon:v1.10.1
Geladenes Bild: goharbor/notary-server-photon:v0.6.1-v1.10.1
Geladenes Bild: goharbor/clair-photon:v2.1.1-v1.10.1
Geladenes Bild: goharbor/harbor-log:v1.10.1
Geladenes Bild: goharbor/registry-photon:v2.7.1-patch-2819-2553-v1.10.1
Geladenes Bild: goharbor/notary-signer-photon:v0.6.1-v1.10.1
Geladenes Bild: goharbor/chartmuseum-photon:v0.9.0-v1.10.1
Geladenes Bild: goharbor/harbor-registryctl:v1.10.1
Geladenes Bild: goharbor/nginx-photon:v1.10.1
Geladenes Bild: goharbor/harbor-migrator:v1.10.1
Geladenes Bild: goharbor/prepare:v1.10.1
Geladenes Bild: goharbor/harbor-portal:v1.10.1
Geladenes Bild: goharbor/harbor-core:v1.10.1
Geladenes Bild: goharbor/harbor-db:v1.10.1


[Schritt 3]: Umgebung vorbereiten ...

[Schritt 4]: Hafenkonfigurationen vorbereiten ...
Das Basisverzeichnis „prepare“ ist auf /mnt/harbour eingestellt.
Löschen der Konfigurationsdatei: /config/log/logrotate.conf
Löschen der Konfigurationsdatei: /config/log/rsyslog_docker.conf
Löschen der Konfigurationsdatei: /config/nginx/conf.d/notary.upstream.conf
Löschen der Konfigurationsdatei: /config/nginx/conf.d/notary.server.conf
Löschen der Konfigurationsdatei: /config/nginx/nginx.conf
Löschen der Konfigurationsdatei: /config/core/env
Löschen der Konfigurationsdatei: /config/core/app.conf
Löschen der Konfigurationsdatei: /config/registry/config.yml
Löschen der Konfigurationsdatei: /config/registry/root.crt
Löschen der Konfigurationsdatei: /config/registryctl/env
Löschen der Konfigurationsdatei: /config/registryctl/config.yml
Löschen der Konfigurationsdatei: /config/db/env
Löschen der Konfigurationsdatei: /config/jobservice/env
Löschen der Konfigurationsdatei: /config/jobservice/config.yml
Löschen der Konfigurationsdatei: /config/notary/server-config.postgres.json
Löschen der Konfigurationsdatei: /config/notary/server_env
Löschen der Konfigurationsdatei: /config/notary/signer_env
Löschen der Konfigurationsdatei: /config/notary/signer-config.postgres.json
Löschen der Konfigurationsdatei: /config/notary/notary-signer.key
Löschen der Konfigurationsdatei: /config/notary/notary-signer.crt
Löschen der Konfigurationsdatei: /config/notary/notary-signer-ca.crt
Löschen der Konfigurationsdatei: /config/notary/root.crt
Löschen der Konfigurationsdatei: /config/clair/postgresql-init.d/README.md
Löschen der Konfigurationsdatei: /config/clair/postgres_env
Löschen der Konfigurationsdatei: /config/clair/config.yaml
Löschen der Konfigurationsdatei: /config/clair/clair_env
Löschen der Konfigurationsdatei: /config/clair-adapter/env
Löschen der Konfigurationsdatei: /config/chartserver/env
Generierte Konfigurationsdatei: /config/log/logrotate.conf
Generierte Konfigurationsdatei: /config/log/rsyslog_docker.conf
Generierte Konfigurationsdatei: /config/nginx/nginx.conf
Generierte Konfigurationsdatei: /config/core/env
Generierte Konfigurationsdatei: /config/core/app.conf
Generierte Konfigurationsdatei: /config/registry/config.yml
Generierte Konfigurationsdatei: /config/registryctl/env
Generierte Konfigurationsdatei: /config/db/env
Generierte Konfigurationsdatei: /config/jobservice/env
Generierte Konfigurationsdatei: /config/jobservice/config.yml
Geheimnis aus Datei geladen: /secret/keys/secretkey
Generierte Konfigurationsdatei: /config/chartserver/env
Generierte Konfigurationsdatei: /compose_location/docker-compose.yml
Bereinigen Sie das Eingabeverzeichnis



[Schritt 5]: Harbor starten ...
Hafenlog erstellen ... fertig
Hafenportal erstellen ... fertig
Registryctl erstellen ... fertig
Harbor-DB wird erstellt ... fertig
Redis erstellen ... fertig
Registrierung erstellen ... fertig
Chartmuseum erstellen ... fertig
Erstellen von Harbor-Core ... fertig
Nginx erstellen ... fertig
Erstellen von harbour-jobservice ... fertig
✔ ----Harbor wurde erfolgreich installiert und gestartet.----
[root@server1 Hafen]# docker-compose ps
      Name Befehl Status Ports                             
--------------------------------------------------------------------------------------------------------------------------------------------
chartmuseum ./docker-entrypoint.sh Up (Gesundheit: wird gestartet) 9999/tcp                                                       
harbor-core /harbor/harbor_core Up (Gesundheit: wird gestartet)                                                                  
harbor-db /docker-entrypoint.sh Aktiv (Gesundheit: wird gestartet) 5432/tcp                                                       
harbor-jobservice /harbor/harbor_jobservice ... Up (Gesundheit: wird gestartet)                                                                  
harbor-log /bin/sh -c /usr/local/bin/ ... Up (Gesundheit: wird gestartet) 127.0.0.1:1514->10514/tcp                                      
Harbor-Portal nginx -g Daemon aus; Aktiv (Gesundheit: wird gestartet) 8080/TCP                                                       
nginx nginx -g Daemon aus; Aktiv (Gesundheit: wird gestartet) 0.0.0.0:80->8080/tcp,:::80->8080/tcp,                          
                                                                             0.0.0.0:443->8443/tcp,:::443->8443/tcp                         
redis redis-server /etc/redis.conf Aktiv (Gesundheit: wird gestartet) 6379/tcp                                                       
Registrierung /home/harbor/entrypoint.sh Aktiv (Gesundheit: wird gestartet) 5000/tcp                                                       
registryctl /home/harbor/start.sh Up (Gesundheit: wird gestartet) 

Bildbeschreibung hier einfügen

Endergebnis

Oben finden Sie den detaillierten Inhalt des voll funktionsfähigen Docker5-Harbors. Weitere Informationen zu Docker Harbor finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung zum Erstellen eines privaten Docker-Image-Repositorys basierend auf Harbor
  • Docker erstellt ein privates Lager (Registrierung, Hafen)
  • Architektur und Komponentenbeschreibung der privaten Docker-Bibliothek Harbor
  • Detaillierte Schritte zur Installation von Harbor, einem privaten Docker-Repository
  • Implementierung von Docker zum Aufbau eines privaten Warehouse (Registrierung und Harbor)
  • Beispiel zum Erstellen eines öffentlichen Harbor-Repository mit Docker
  • Bauprozess eines privaten Docker-Lagerhafens
  • Schritte für Docker zum Erstellen eines privaten Lagerhafens
  • Docker Gitlab+Jenkins+Harbor erstellt einen persistenten Plattformbetrieb
  • Detailliertes Tutorial zum Erstellen einer Continuous-Integration-Delivery-Umgebung basierend auf Docker+K8S+GitLab/SVN+Jenkins+Harbor
  • So erstellen Sie mit Harbor ein privates Docker-Repository
  • Detailliertes Tutorial zur Installation von Harbor Private Warehouse mit Docker Compose
  • Jenkins erstellt Docker-Images und überträgt sie in das Harbor-Warehouse.
  • Methode zum Erstellen eines privaten Docker-Warehouses basierend auf Harbor
  • Einführung und Bereitstellungsmethode des Docker Private Warehouse Harbor

<<:  Prinzip und Implementierung der parallelen Replikation von MySQL5.7

>>:  Detaillierte Erläuterung verschiedener Methoden der Vue-Komponentenkommunikation

Artikel empfehlen

Eine detaillierte Einführung in den netstat-Befehl in Linux

Inhaltsverzeichnis 1. Einleitung 2. Beschreibung ...

Tomcat-Quellcodeanalyse und -Verarbeitung

Inhaltsverzeichnis Vorwort 1. Endpunkt 2. Verbind...

Detaillierte Beispiele für Ersetzen und Ersetzen in MySQL into_Mysql

„Replace“ und „Replace into“ von MySQL sind beide...

Installieren Sie .NET 6.0 im CentOS-System mithilfe eines Cloud-Servers

.NET SDK-Download-Link https://dotnet.microsoft.c...

Detaillierte Erklärung der Verwendung des Linux-Befehls lsof

lsof (List Open Files) ist ein Tool zum Anzeigen ...

Kapselungsmethode der Vue-Breadcrumbs-Komponente

Vue kapselt die Breadcrumb-Komponente zu Ihrer In...

Lösung zur Deinstallation von Python und Yum im CentOs-System

Hintergrund des Unfalls: Vor einigen Tagen habe i...

So ändern Sie den Standardzeichensatz von MySQL auf dem MAC auf UTF-8

1. Überprüfen Sie den Zeichensatz des standardmäß...

Details zu verschiedenen Schriftformaten in HTML-Webseiten

Dieser Abschnitt beginnt mit den Details der Text...

Fallanalyse mehrerer MySQL-Aktualisierungsvorgänge

Inhaltsverzeichnis Fallstudie Kontostand aktualis...

Verwenden Sie PSSH zur Stapelverwaltung von Linux-Servern

pssh ist eine in Python implementierte Open-Sourc...