Architektur und Komponentenbeschreibung der privaten Docker-Bibliothek Harbor

Architektur und Komponentenbeschreibung der privaten Docker-Bibliothek Harbor

In diesem Artikel wird die Zusammensetzung der Harbor-Architektur erläutert und wie die einzelnen Komponenten zur Laufzeit verwendet werden.

Architektur

Containerinformationen

[root@liumiao Hafen]# docker-compose ps
    Name Befehl Status Ports                
-------------------------------------------------------------------------------------------------------------------------------
harbor-adminserver /harbor/start.sh Nach oben                          
harbor-db /usr/local/bin/docker-entr … Bis 3306/tcp                       
harbor-jobservice /harbor/start.sh Nach oben                          
harbor-log /bin/sh -c /usr/local/bin/ ... Up 127.0.0.1:1514->10514/tcp                    
harbor-ui /harbor/start.sh Nach oben                          
nginx nginx -g Daemon aus; Aktiv 0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp, 0.0.0.0:80->80/tcp 
redis docker-entrypoint.sh redis ... Bis 6379/tcp                       
Registrierung /entrypoint.sh serve /etc/ ... Bis 5000/tcp [root@liumiao harbor]#

Spezifische Anweisungen

Proxy

Der Proxy verwendet nginx als Reverse-Proxy, und der Kern des gesamten Prozesses liegt in der nginx-Konfigurationsdatei. In der folgenden Konfigurationsdatei können Sie die Anweisungen von Harbor zur Integration verschiedener anderer Komponenten deutlich erkennen, und die tatsächliche Implementierung hängt im Wesentlichen von den nginx-Einstellungen ab.

[root@liumiao-Hafen]# ls
LIZENZ allgemein docker-compose.notary.yml ha harbor.v1.5.2.tar.gz Open_Source_Lizenz
HINWEIS docker-compose.clair.yml docker-compose.yml harbor.cfg install.sh vorbereiten
[root@liumiao-Hafen]# cat common/config/nginx/nginx.conf 
Arbeiterprozesse automatisch;
Ereignisse {
 Arbeiterverbindungen 1024;
 verwenden Sie epoll;
 multi_accept ein;
}
http {
 tcp_nodelay ein;
 # dies ist notwendig, damit wir die Anforderungspufferung in allen Fällen deaktivieren können
 Proxy_http_Version 1.1;
 Upstream-Registrierung {
  Server-Registrierung: 5000;
 }
 Upstream-Benutzeroberfläche {
  Server-Benutzeroberfläche:8080;
 }
 log_format timed_combined '$remote_addr - '
  '"$Anfrage" $status $body_bytes_gesendet '
  '"$http_referer" "$http_user_agent" '
  „$Anforderungszeit $Upstream_Antwortzeit $Pipe“;
 Zugriffsprotokoll /dev/stdout zeitkombiniert;
 Server {
  hören Sie 80;
  Server-Tokens aus;
  # Deaktivieren Sie alle Begrenzungen, um HTTP 413 beim Hochladen großer Bilder zu vermeiden
  Client_max_Körpergröße 0;
  Standort / {
   Proxy-Passwort http://ui/;
   Proxy_Set_Header Host $host;
   Proxy_Set_Header X-Real-IP $Remote_Addr;
   proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for;
   # Wenn Sie Harbor hinter einem anderen Proxy einrichten, z. B. einer Nginx-Instanz, entfernen Sie die folgende Zeile, wenn der Proxy bereits über ähnliche Einstellungen verfügt.
   Proxy_set_header X-Weitergeleitet-Proto $scheme;
   Proxy-Pufferung aus;
   Proxy_Request_Buffering aus;
  }
  Standort /v1/ {
   Rückgabe 404;
  }
  Standort /v2/ {
   Proxy-Passwort http://ui/registryproxy/v2/;
   Proxy_set_header Host $http_host;
   Proxy_Set_Header X-Real-IP $Remote_Addr;
   proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for;
   # Wenn Sie Harbor hinter einem anderen Proxy einrichten, z. B. einer Nginx-Instanz, entfernen Sie die folgende Zeile, wenn der Proxy bereits über ähnliche Einstellungen verfügt.
   Proxy_set_header X-Weitergeleitet-Proto $scheme;
   Proxy-Pufferung aus;
   Proxy_Request_Buffering aus;
  }
  Standort /Dienst/ {
   Proxy-Passwort http://ui/service/;
   Proxy_Set_Header Host $host;
   Proxy_Set_Header X-Real-IP $Remote_Addr;
   proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for;
   # Wenn Sie Harbor hinter einem anderen Proxy einrichten, z. B. einer Nginx-Instanz, entfernen Sie die folgende Zeile, wenn der Proxy bereits über ähnliche Einstellungen verfügt.
   Proxy_set_header X-Weitergeleitet-Proto $scheme;
   Proxy-Pufferung aus;
   Proxy_Request_Buffering aus;
  }
  Standort /Dienst/Benachrichtigungen {
   Rückgabe 404;
  }
 }
}
[root@liumiao-Hafen]#

Datenbank

Sie können sehen, dass MariaDB 10.2.14 verwendet wird und der Datenbankname von Harbor Registry lautet

[root@liumiao-Hafen]# docker exec -it harbor-db sh
sh-4.3#mysql -uroot -pliumiaopw
Willkommen beim MariaDB-Monitor. Befehle enden mit ; ​​oder \g.
Ihre MariaDB-Verbindungs-ID ist 21
Serverversion: 10.2.14-MariaDB Quellverteilung
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab und andere.
Geben Sie „help;“ oder „\h“ ein, um Hilfe zu erhalten. Geben Sie „\c“ ein, um die aktuelle Eingabeanweisung zu löschen.
MariaDB [(keine)]> Datenbanken anzeigen;
+--------------------+
| Datenbank |
+--------------------+
| Informationsschema |
|mysql |
| Leistungsschema |
| Registrierung |
+--------------------+
4 Zeilen im Satz (0,00 Sek.)
MariaDB [(keine)]>

Nachdem Sie die Informationen der Datenbanktabelle bestätigt haben, können Sie sehen, dass die Datenbank in der aktuellen Version dieses Verwendungsmodus etwa 20 Tabellen enthält.

MariaDB [(keine)]> Registrierung verwenden;
Einlesen von Tabelleninformationen zur Vervollständigung von Tabellen- und Spaltennamen
Sie können diese Funktion deaktivieren, um einen schnelleren Start mit -A zu erhalten
Datenbank geändert
MariaDB [Registrierung]> Tabellen anzeigen;
+-------------------------------+
| Tabellen_in_Registrierung |
+-------------------------------+
| Zugang |
| Zugriffsprotokoll |
| alembic_version |
|clair_vuln_Zeitstempel|
|Hafenbezeichnung|
| Hafenressourcenbezeichnung |
| img_scan_job |
| img_scan_übersicht |
| Projekt |
| Projektmitglied |
| Projektmetadaten |
| Eigenschaften |
| sofortiger_Replikationstrigger |
| Replikationsjob |
| Replikationsrichtlinie |
| Replikationsziel |
| Aufbewahrungsort |
| Rolle |
| Benutzer |
| Benutzergruppe |
+-------------------------------+
20 Zeilen im Satz (0,00 Sek.)
MariaDB [Registrierung]>

Holzsammler

Standardmäßig werden die Protokolle in Harbor in den folgenden Verzeichnissen gesammelt und verwaltet

[root@liumiao Hafen]# ls /var/log/hafen
adminserver.log jobservice.log mysql.log proxy.log redis.log registry.log ui.log
[root@liumiao-Hafen]#

docker-compose.yml

[root@liumiao-Hafen]# cat docker-compose.yml 
Version: '2'
Leistungen:
 Protokoll:
  Bild: vmware/harbour-log:v1.5.2
  Containername: Hafenprotokoll 
  Neustart: immer
  Bände:
   – /var/log/hafen/:/var/log/docker/:z
   - ./common/config/log/:/etc/logrotate.d/:z
  Häfen:
   127.0.0.1:1514:10514
  Netzwerke:
   -Hafen
 Registrierung:
  Bild: vmware/registry-photon:v2.6.2-v1.5.2
  Containername: Registrierung
  Neustart: immer
  Bände:
   – /data/registry:/storage:z
   - ./common/config/registry/:/etc/registry/:z
  Netzwerke:
   -Hafen
  Umfeld:
   -GODEBUG=netdns=cgo
  Befehl:
   ["dienen", "/etc/registry/config.yml"]
  hängt ab von:
   -Protokoll
  Protokollierung:
   Treiber: "syslog"
   Optionen: 
    Syslog-Adresse: "tcp://127.0.0.1:1514"
    Schlagwort: "Registrierung"
 MySQL:
  Bild: vmware/harbour-db:v1.5.2
  Containername: Harbor-DB
  Neustart: immer
  Bände:
   - /data/database:/var/lib/mysql:z
  Netzwerke:
   -Hafen
  Umgebungsdatei:
   - ./common/config/db/env
  hängt ab von:
   -Protokoll
  Protokollierung:
   Treiber: "syslog"
   Optionen: 
    Syslog-Adresse: "tcp://127.0.0.1:1514"
    Schlagwort: "mysql"
 Adminserver:
  Bild: vmware/harbor-adminserver:v1.5.2
  Containername: Harbor-Adminserver
  Umgebungsdatei:
   - ./common/config/adminserver/env
  Neustart: immer
  Bände:
   - /data/config/:/etc/adminserver/config/:z
   - /data/geheimerSchlüssel:/etc/adminserver/Schlüssel:z
   – /data/:/data/:z
  Netzwerke:
   -Hafen
  hängt ab von:
   -Protokoll
  Protokollierung:
   Treiber: "syslog"
   Optionen: 
    Syslog-Adresse: "tcp://127.0.0.1:1514"
    Schlagwort: "Adminserver"
 Benutzeroberfläche:
  Bild: vmware/harbour-ui:v1.5.2
  Containername: Harbor-UI
  Umgebungsdatei:
   - ./common/config/ui/env
  Neustart: immer
  Bände:
   - ./common/config/ui/app.conf:/etc/ui/app.conf:z
   - ./common/config/ui/private_key.pem:/etc/ui/private_key.pem:z
   - ./common/config/ui/certificates/:/etc/ui/certificates/:z
   - /data/geheimerSchlüssel:/etc/ui/Schlüssel:z
   – /data/ca_download/:/etc/ui/ca/:z
   - /data/psc/:/etc/ui/token/:z
  Netzwerke:
   -Hafen
  hängt ab von:
   -Protokoll
   -adminserver
   - Registrierung
  Protokollierung:
   Treiber: "syslog"
   Optionen: 
    Syslog-Adresse: "tcp://127.0.0.1:1514"
    Schlagwort: "ui"
 Jobservice:
  Bild: vmware/harbour-jobservice:v1.5.2
  Containername: Hafen-Jobservice
  Umgebungsdatei:
   - ./common/config/jobservice/env
  Neustart: immer
  Bände:
   - /data/job_logs:/var/log/jobs:z
   - ./common/config/jobservice/config.yml:/etc/jobservice/config.yml:z
  Netzwerke:
   -Hafen
  hängt ab von:
   - Redis
   - Benutzeroberfläche
   -adminserver
  Protokollierung:
   Treiber: "syslog"
   Optionen: 
    Syslog-Adresse: "tcp://127.0.0.1:1514"
    Schlagwort: "Jobservice"
 Redis:
  Bild: vmware/redis-photon:v1.5.2
  Containername: Redis
  Neustart: immer
  Bände:
   – /Daten/Redis:/Daten
  Netzwerke:
   -Hafen
  hängt ab von:
   -Protokoll
  Protokollierung:
   Treiber: "syslog"
   Optionen: 
    Syslog-Adresse: "tcp://127.0.0.1:1514"
    Schlagwort: "redis"
 Proxy:
  Bild: vmware/nginx-photon:v1.5.2
  Containername: nginx
  Neustart: immer
  Bände:
   - ./common/config/nginx:/etc/nginx:z
  Netzwerke:
   -Hafen
  Häfen:
   - 80:80
   -443:443
   -4443:4443
  hängt ab von:
   -mysql
   - Registrierung
   - Benutzeroberfläche
   -Protokoll
  Protokollierung:
   Treiber: "syslog"
   Optionen: 
    Syslog-Adresse: "tcp://127.0.0.1:1514"
    Schlagwort: "Proxy"
Netzwerke:
 Hafen:
  extern: false
[root@liumiao-Hafen]#

Hinweis: Benutzerdefinierte Portnummer

Im Beispiel des vorherigen Artikels verwenden wir den Standardport 80 als Hafenport. Wenn Sie ihn ändern möchten (z. B. auf 8848), befolgen Sie die nachstehenden Schritte, um ihn zu ändern.

Inhalt festlegen

Sie können die detaillierten Informationen zu den Harbor-Einstellungselementen überprüfen, indem Sie die Datenbankeigenschaften oder API/Systeminfo anzeigen.

Eigenschaften

[root@liumiao-Hafen]# docker exec -it harbor-db sh
sh-4.3#mysql -uroot -pliumiaopw
Willkommen beim MariaDB-Monitor. Befehle enden mit ; ​​oder \g.
Ihre MariaDB-Verbindungs-ID lautet 153
Serverversion: 10.2.14-MariaDB Quellverteilung
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab und andere.
Geben Sie „help;“ oder „\h“ ein, um Hilfe zu erhalten. Geben Sie „\c“ ein, um die aktuelle Eingabeanweisung zu löschen.
MariaDB [(keine)]> Registrierung verwenden
Einlesen von Tabelleninformationen zur Vervollständigung von Tabellen- und Spaltennamen
Sie können diese Funktion deaktivieren, um einen schnelleren Start mit -A zu erhalten
Datenbank geändert
MariaDB [Registrierung]> Wählen Sie * aus den Eigenschaften aus;
+----+--------------------------------+------------------------------------------+
| Ich würde | k | v |
+----+--------------------------------+------------------------------------------+
| 1 | cfg_expiration | 5 |
| 2 | Projekterstellungsbeschränkung | jeder |
| 3 | uaa_client_secret | <enc-v1>cBvRPcG+p3oNVnJh8VM+SjvlcEsKYg== |
| 4 | clair_db_host | postgres |
| 5 | Token-Service-URL | http://ui:8080/service/token |
| 6 | mysql_password | <enc-v1>HDqd+PbHcG9EWK9DF3RzM43fTtPvCjdvyQ== |
| 7 | uaa_endpoint | uaa.meinedomain.org |
| 8 | maximale Anzahl an Arbeitsstellen | 50 |
| 9 | SQLite-Datei | |
| 10 | E-Mail-Absender | admin <beispieladmin@meineDomäne.com> |
| 11 | ldap_base_dn | ou=Personen,dc=meineDomäne,dc=com |
| 12 | clair_db_port | 5432 |
| 13 | MySQL-Port | 3306 |
| 14 | ldap_search_dn | |
| 15 | clair_db_Benutzername | postgres |
| 16 | E-Mail_unsicher | falsch |
| 17 | Datenbanktyp | MySQL |
| 18 | ldap_filter | |
| 19 | mit_Notar | falsch |
| 20 | Admin-Initialpasswort | <enc-v1>4ZEvd/GfBYSdF9I6PfeI/XIvfGhPITaD3w== |
| 21 | Notar-URL | http://Notar-Server:4443 |
| 22 | Auth-Modus | db_auth |
| 23 | ldap_group_search_scope | 2 |
| 24 | ldap_uid | Benutzerkennung |
| 25 | E-Mail-Benutzername | Beispieladmin@meineDomäne.com |
| 26 | MySQL-Datenbank | Registrierung |
| 27 | Schlüssel neu laden | |
| 28 | clair_url | http://clair:6060 |
| 29 | ldap_group_search_filter | Objektklasse=Gruppe |
| 30 | E-Mail-Passwort | <enc-v1>h18ptbUM5oJwtKOzjJ4X5LOiPw== |
| 31 | email_ssl | falsch |
| 32 | ldap_timeout | 5 |
| 33 | uaa_client_id | Ich nenne |
| 34 | Name des Registrierungsspeicheranbieters | Dateisystem |
| 35 | Selbstregistrierung | wahr |
| 36 | E-Mail-Port | 25 |
| 37 | ui_url | http://ui:8080 |
| 38 | Tokenablauf | 30 |
| 39 | E-Mail-Identität | |
| 40 | clair_db | postgres |
| 41 | uaa_verify_cert | wahr |
| 42 | ldap_verify_cert | wahr |
| 43 | LDAP-Gruppenattributname | cn |
| 44 | mysql_host | mysql |
| 45 | schreibgeschützt | falsch |
| 46 | ldap_url | ldaps://ldap.meinedomain.com |
| 47 | ext_endpoint | http://192.168.163.128 |
| 48 | ldap_group_base_dn | ou=Gruppe,dc=meineDomäne,dc=com |
| 49 | mit_clair | falsch |
| 50 | admiral_url | N/A |
| 51 | ldap_scope | 2 |
| 52 | Registrierungs-URL | http://registry:5000 |
| 53 | jobservice_url | http://jobservice:8080 |
| 54 | E-Mail-Host | smtp.meineDomäne.com |
| 55 | ldap_search_password | <enc-v1>F2QZkeEPTQPsJ9KNsBWcXA== |
| 56 | mysql_benutzername | root |
| 57 | clair_db_password | <enc-v1>IGBg3NxvT7qCYGIB+zizax+GojoM7ao2VQ== |
+----+--------------------------------+------------------------------------------+
57 Zeilen im Satz (0,00 Sek.)
MariaDB [Registrierung]>

api/systeminfo

[root@liumiao-Hafen]# curl http://localhost/api/systeminfo 
{
 "mit_notar": falsch,
 "with_clair": falsch,
 "with_admiral": falsch,
 "admiral_endpoint": "Nicht zutreffend",
 "auth_mode": "db_auth",
 "registry_url": "192.168.163.128",
 "project_creation_restriction": "jeder",
 "Selbstregistrierung": wahr,
 "has_ca_root": falsch,
 "harbor_version": "v1.5.2-8e61deae",
 "next_scan_all": 0,
 "registry_storage_provider_name": "Dateisystem",
 "schreibgeschützt": false
}[root@liumiao-Hafen]#

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an

Das könnte Sie auch interessieren:
  • So installieren Sie allgemeine Komponenten (MySQL, Redis) in Docker
  • Detaillierte Erläuterung des Union-Dateisystems der Docker-Kernkomponenten

<<:  Lösung für MySQL, das aufgrund einer übermäßigen Speicherkonfiguration nicht gestartet werden kann

>>:  Beispielcode zur Implementierung der Menüberechtigungssteuerung in Vue

Artikel empfehlen

MySQL-Cursorfunktionen und -Verwendung

Inhaltsverzeichnis Definition Die Rolle des Curso...

Beispielcode zum Erstellen eines minimierten Header-Effekts nur mit CSS

Zusammengeklappte Kopfzeilen sind eine großartige...

Eine kurze Analyse der Crontab-Aufgabenplanung in Linux

1. Erstellen Sie eine Planungsaufgabe Anweisung c...

5 grundlegende Fähigkeiten zum Design von Themenseiten (Alibaba UED Shanmu)

Bei diesem Thema handelt es sich um einen interne...

Installation und Verwendung der MySQL MyCat-Middleware

1. Was ist mycat Ein vollständig Open Source-Groß...

21 Best Practices zur MySQL-Standardisierung und -Optimierung!

Vorwort Jede gute Angewohnheit ist ein Schatz. Di...

Teilen Sie 12 häufig verwendete Loader in Webpack (Zusammenfassung)

Inhaltsverzeichnis Vorwort Stillader CSS-Lader Sa...

Anwendungsszenarien und Lösungen für die MySQL-Komprimierung

Einführung Beschreibt die Anwendungsfälle und Lös...

So installieren Sie das Programm setup.py unter Linux

Führen Sie zuerst den Befehl aus: [root@mini61 se...