Linux4Ever

Dies ist eine alte Version des Dokuments!


Installation

Für die Installation werden die Pakete von der Docker-Seite „https://download.docker.com“ für das entsprechende Betriebssystem benötigt. Im Falle eines eigenen lokalen Repository kann dann einfach installiert werden:

~# apt install docker-ce

Jetzt kann die Version von Docker angezeigt werden:

~:# docker --version
Docker version 29.1.2, build 890dcca
~#

Debmirror

Im vorliegenden Fall wurde versucht, das Docker-Repository zu spiegeln, um eine sogenannte „Air-gapped“-Umgebung zu testen, also eine Umgebung, die vom Internet „getrennt“ arbeiten kann. Dazu wurde Repository von der Seite „https://download.docker.com“ lokal mittels „debmirror“ gespiegelt. Leider kam es da zu dem unten angezeigten Fehler:

[GNUPG:] ERROR add_keyblock_resource 33554433\
[GNUPG:] NEWSIG\
[GNUPG:] ERROR keydb_search 33554445\
[GNUPG:] ERRSIG 7EA0A9C3F273FCD8 1 10 00 1764855167 9 -\
[GNUPG:] NO_PUBKEY 7EA0A9C3F273FCD8\
gpgv: unknown type of key resource 'trustedkeys.kbx'\
gpgv: Schlüsselblockhilfsmittel`/home/repo/.gnupg/trustedkeys.kbx': Allgemeiner Fehler\
gpgv: Signatur vom Do 04 Dez 2025 14:32:47 CET\
gpgv:                mittels RSA-Schlüssel 7EA0A9C3F273FCD8\
gpgv: Signatur kann nicht geprüft werden: Kein öffentlicher Schlüssel\
.temp/.tmp/dists/trixie/Release.gpg signature does not verify.\
Failed to download some Release, Release.gpg or InRelease files!\
WARNING: releasing 1 pending lock...\
[GNUPG:] ERROR add_keyblock_resource 33554433\
[GNUPG:] NEWSIG\
[GNUPG:] ERROR keydb_search 33554445\
[GNUPG:] ERRSIG 7EA0A9C3F273FCD8 1 10 01 1764855167 9 -\
[GNUPG:] NO_PUBKEY 7EA0A9C3F273FCD8\
gpgv: unknown type of key resource 'trustedkeys.kbx'\
gpgv: Schlüsselblockhilfsmittel`/home/repo/.gnupg/trustedkeys.kbx': Allgemeiner Fehler\
gpgv: Signatur vom Do 04 Dez 2025 14:32:47 CET\
gpgv:                mittels RSA-Schlüssel 7EA0A9C3F273FCD8\
gpgv: Signatur kann nicht geprüft werden: Kein öffentlicher Schlüssel\
.temp/.tmp/dists/trixie/InRelease signature does not verify.\
Release file does not contain Codename; using Suite (trixie).\
Errors:\
.temp/.tmp/dists/trixie/Release.gpg signature does not verify\
.temp/.tmp/dists/trixie/InRelease signature does not verify

Der Hintergrund ist, dass dem „debmirror“ die Signatur von Docker fehlt, was ihm aber beigebracht werden kann. Es muss der entsprechende Schlüssel von der Webseite heruntergeladen und importiert werden:

~$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg && \
gpg --no-default-keyring -a --keyring /usr/share/keyrings/docker-archive-keyring.gpg --export 7EA0A9C3F273FCD8 | \
gpg --no-default-keyring --keyring ~/.gnupg/trustedkeys.gpg --import -

Harbor als Proxy

Sollte ein Harbor als Registrierung vorhanden sein (sehr hilfreich in Umgebungen ohne direkten Internetzugang), gibt es die Möglichkeit, Seiten von denen Container heruntergeladen werden (zum Beispiel Docker Hub), im Harbor zwischenzuspeichern. Damit fungiert der Harbor als Proxy. Am Beispiel von Docker Hub soll das demonstriert werden. Die Informationen wurden teilweise von der Webseite „blogs.vmware.com“ entnommen.

Voraussetzung

Es wird vorausgesetzt, dass im Harbor bereits ein Registrierung zum Docker Hub besteht, wie es unter Punkt 6 hier beschrieben steht.

Proxy-Projekt

Nach der Einrichtung der Registrierung im Harbor muss unter „Projects“ ein neues Projekt erstellt werden:

Wichtig ist hier die Aktivierung von „Proxy Cache“.


Nginx von Docker Hub

Jetzt kann Nginx von Docker Hub gezogen werden, über den Harbor als Proxy.

Direkter Aufruf ohne Harbor:

~# docker pull nginx:latest


Aufruf über den Harbor:


~# docker
pull
slxharbor.fritz.box /
docker-hub -
proxy /
nginx
:
latest
 <font inherit/monospace;;inherit;;#000000background-color:#ffffff;>Error response from daemon: failed to resolve reference "slxharbor.fritz.box/docker-hub-proxy/nginx:latest": failed to do request: Head "https://slxharbor.fr</font> \\
itz.box/v2/docker-hub-proxy/nginx/manifests/latest": tls: failed to verify certificate: x509: certificate signed by unknown authority \\
~#

Zertifikatsproblem

Dem Harbor-Zertifikat wird nicht vertraut, weil es nicht bekannt ist. Das liegt daran, dass es ein selbst erstelltes Zertfikat ist. Damit Docker dem Zertifikat vertraut, muss es in das Verzeichnis „/usr/local/share/ca-certificates/“ kopiert und dem Zertifikatsspeicher hinzugefügt werden.


Schritt 1: Kopieren der CA:

~#
 <font inherit/monospace;;inherit;;#000000background-color:#ffffff;>cp -v ca.crt /usr/local/share/ca-certificates/</font>
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;></font> \\
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;>'ca.crt' -> '/usr/local/share/ca-certificates/ca.crt'</font> \\
~# 

Schritt 2: Kopieren des Server-Zertifikates:

~#
 <font inherit/monospace;;inherit;;#000000background-color:#ffffff;>cp -v slxharbor.fritz.box.crt /usr/local/share/ca-certificates/</font>
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;></font> \\
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;>'slxharbor.fritz.box.crt' -> '/usr/local/share/ca-certificates/slxharbor.fritz.box.crt'</font> \\
~#

Schritt 3: Hinzufügen des Zertifikates zum Zertifikatsspeicher:

~#
 <font inherit/monospace;;inherit;;#000000background-color:#ffffff;>update-ca-certificates --fresh</font>
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;></font> \\
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;>Clearing symlinks in /etc/ssl/certs...</font>
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;></font> \\
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;>done.</font>
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;></font> \\
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;>Updating certificates in /etc/ssl/certs...</font>
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;></font> \\
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;>rehash: warning: skipping ca-certificates.crt, it does not contain exactly one certificate or CRL</font>
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;></font> \\
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;>151 added, 0 removed; done.</font>
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;></font> \\
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;>Running hooks in /etc/ca-certificates/update.d...</font>
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;></font> \\
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;>done.</font> \\
~#

Schritt 4: Docker-Dienst neu starten:

~#
 <font inherit/monospace;;inherit;;#000000background-color:#ffffff;>systemctl restart docker</font> 

Erneuter Pull-Versuch:

~#
 <font inherit/monospace;;inherit;;#000000background-color:#ffffff;>docker pull slxharbor.fritz.box/docker-hub-proxy/nginx:latest</font>
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;></font> \\
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;>Error response from daemon: unknown: failed to resolve reference "slxharbor.fritz.box/docker-hub-proxy/nginx:latest": unexpected status from HEAD request to</font> \\
https://slxharbor.fritz.box/v2/docker-hub-proxy/nginx/manifests/latest: 401 Unauthorized \\
~#

Authorisierung

Damit Daten vom Harbor geholt werden können, muss eine (einmalige) Authorisierung erfolgen:

~#
 <font inherit/monospace;;inherit;;#000000background-color:#ffffff;>docker login slxharbor.fritz.box --username sborne</font>
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;></font> \\
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;>Password:</font>
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;></font> \\
\\
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;>WARNING! Your credentials are stored unencrypted in '/root/.docker/config.json'.</font>
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;></font> \\
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;>Configure a credential helper to remove this warning. See</font>
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;></font> \\
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;>https://docs.docker.com/go/credential-store/</font>
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;></font> \\
\\
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;>Login Succeeded</font> \\
\\
~#

Nächster Pull-Versuch:

~#
 <font inherit/monospace;;inherit;;#000000background-color:#ffffff;>docker pull slxharbor.fritz.box/docker-hub-proxy/nginx:latest</font>
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;></font> \\
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;>latest: Pulling from docker-hub-proxy/nginx</font>
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;></font> \\
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;>5b5fa0b64d74: Pull complete</font>
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;></font> \\
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;>1733a4cd5954: Pull complete</font>
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;></font> \\
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;>5b219a92f92a: Pull complete</font>
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;></font> \\
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;>ee3a09d2248a: Pull complete</font>
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;></font> \\
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;>7382b41547b8: Pull complete</font>
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;></font> \\
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;>9ee60c6c0558: Pull complete</font>
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;></font> \\
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;>114e699da838: Pull complete</font>
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;></font> \\
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;>adeb5aba46ee: Download complete</font>
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;></font> \\
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;>11488ed04caf: Download complete</font>
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;></font> \\
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;>Digest: sha256:fb01117203ff38c2f9af91db1a7409459182a37c87cced5cb442d1d8fcc66d19</font>
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;></font> \\
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;>Status: Downloaded newer image for slxharbor.fritz.box/docker-hub-proxy/nginx:latest</font>
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;></font> \\
 <font inherit/inherit;;inherit;;#000000background-color:#ffffff;>slxharbor.fritz.box/docker-hub-proxy/nginx:latest</font> \\
~#

Geschafft!






.Ende des Dokuments

container/docker/start.1766407107.txt.gz · Zuletzt geändert: von sborne