Authentifizierung bei einer selbst gehosteten Registry mit Benutzername und Passwort
In diesem Schritt erfahren Sie, wie Sie sich bei einer selbst gehosteten Docker-Registry mit Benutzername und Passwort authentifizieren können. Während Docker Hub die Standard-Registry ist, müssen Sie möglicherweise mit privaten Registries interagieren, die in Ihrer Organisation oder bei einem Cloud-Anbieter gehostet werden.
Eine selbst gehostete Registry ist eine Docker-Registry, die Sie selbst einrichten und verwalten, anstatt einen öffentlichen Dienst wie Docker Hub zu nutzen. Dies geschieht oft aus Sicherheits-, Compliance- oder Leistungsgründen.
Um sich bei einer selbst gehosteten Registry zu authentifizieren, verwenden Sie den gleichen Befehl docker login
, müssen aber die Adresse der Registry angeben. Das Format lautet docker login <registry_address>
.
Für dieses Lab werden wir eine selbst gehostete Registry simulieren. Wir verwenden die Platzhalteradresse myregistry.local
. In einer realen Situation wäre dies der tatsächliche Domainname oder die IP-Adresse Ihrer Registry.
Öffnen Sie Ihr Terminal im Verzeichnis ~/project
.
Um sich bei unserer simulierten selbst gehosteten Registry anzumelden, führen Sie den folgenden Befehl aus und ersetzen Sie your_registry_username
und your_registry_password
durch hypothetische Anmeldeinformationen, die Sie für diese Registry verwenden würden:
docker login myregistry.local
Sie werden aufgefordert, den Benutzernamen und das Passwort für die Registry myregistry.local
einzugeben:
Login with your Docker ID to push and pull images from myregistry.local. If you don't have a Docker ID, head over to https://hub.docker.com/ to create one.
Username: your_registry_username
Password: your_registry_password
Geben Sie den hypothetischen Benutzernamen und das Passwort ein. Da myregistry.local
in dieser Umgebung keine echte, laufende Registry ist, wird die Anmeldung wahrscheinlich fehlschlagen, und Sie erhalten eine Fehlermeldung, die darauf hinweist, dass die Registry nicht erreichbar ist oder die Authentifizierung fehlgeschlagen ist. Dies ist bei dieser Simulation zu erwarten. Der Wichtige Aspekt ist das Verständnis der Befehlssyntax und des Prozesses der Angabe einer anderen Registry.
Error response from daemon: Get "http://myregistry.local/v2/": dial tcp: lookup myregistry.local on 127.0.0.53:53: no such host
Obwohl die Anmeldung fehlgeschlagen ist, weil die Registry nicht existiert, ist die Befehlssyntax docker login <registry_address>
für den Versuch, sich bei einer selbst gehosteten Registry zu authentifizieren, korrekt.
In einer realen Situation mit einer laufenden selbst gehosteten Registry würde eine erfolgreiche Anmeldung eine "Login Succeeded"-Meldung ergeben, und Ihre Anmeldeinformationen für diese spezifische Registry würden in Ihrer Docker-Konfigurationsdatei (~/.docker/config.json
) gespeichert werden.
Lassen Sie uns die Docker-Konfigurationsdatei untersuchen, um zu sehen, wie die Registry-Informationen gespeichert werden.
cat ~/.docker/config.json
Sie sehen eine JSON-Struktur. Nach einer erfolgreichen Anmeldung bei Docker Hub im vorherigen Schritt sollten Sie einen Eintrag für https://index.docker.io/v1/
sehen. Wenn Sie sich erfolgreich bei myregistry.local
angemeldet hätten, würden Sie einen zusätzlichen Eintrag für diese Registry-Adresse sehen.
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "..."
}
},
"HttpHeaders": {
"User-Agent": "Docker-Client/..."
},
"credsStore": "desktop"
}
Der Abschnitt auths
enthält die Authentifizierungsinformationen für verschiedene Registries, bei denen Sie sich angemeldet haben. Jeder Schlüssel in auths
ist die Registry-Adresse, und der Wert enthält die Authentifizierungsdetails.
Dieser Schritt hat gezeigt, wie Sie die Adresse einer selbst gehosteten Registry angeben, wenn Sie docker login
verwenden.