Moby: Fehlermeldung beim Erstellen eines Dienstes mit einem in einem privaten Repository gehosteten Image

Erstellt am 30. März 2017  ·  3Kommentare  ·  Quelle: moby/moby

Beschreibung

Ich erhalte eine Fehlermeldung, wenn ich einen Dienst im Schwarmcluster mit einem Image erstelle, das in einem privaten Repository auf dem Docker-Hub gehostet wird.
Der Dienst funktioniert, es ist nur die Fehlermeldung, die jedes Mal gedruckt wird, wenn ich einen Dienst erstelle.

Schritte zum Reproduzieren des Problems:

  1. Erstellen Sie ein privates Repository im Docker Hub
  2. Erstellen Sie einen Schwarmcluster
  3. Melden Sie sich bei Docker an
  4. Ziehen Sie das Bild auf den Server
  5. Erstellen Sie einen Dienst mit dem Bild

Beschreiben Sie die Ergebnisse, die Sie erhalten haben:

unable to pin image organization/some-image to digest: errors:
denied: requested access to the resource is denied
unauthorized: authentication required

Beschreiben Sie die erwarteten Ergebnisse:
Keine Fehlermeldung

Ausgabe von docker version :

Client:
 Version:      17.03.1-ce
 API version:  1.27
 Go version:   go1.7.5
 Git commit:   c6d412e
 Built:        Fri Mar 24 00:45:26 2017
 OS/Arch:      linux/amd64

Server:
 Version:      17.03.1-ce
 API version:  1.27 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   c6d412e
 Built:        Fri Mar 24 00:45:26 2017
 OS/Arch:      linux/amd64
 Experimental: false

Ausgabe von docker info :

Containers: 1
 Running: 1
 Paused: 0
 Stopped: 0
Images: 3
Server Version: 17.03.1-ce
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 33
 Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins: 
 Volume: local
 Network: bridge host macvlan null overlay
Swarm: active
 NodeID: omkzmqvpztv77kkg4j7w6dhj9
 Is Manager: true
 ClusterID: zpzn4xvqs6h5drt29423a7wr6
 Managers: 1
 Nodes: 2
 Orchestration:
  Task History Retention Limit: 5
 Raft:
  Snapshot Interval: 10000
  Number of Old Snapshots to Retain: 0
  Heartbeat Tick: 1
  Election Tick: 3
 Dispatcher:
  Heartbeat Period: 5 seconds
 CA Configuration:
  Expiry Duration: 3 months
 Node Address: x.x.x.x
 Manager Addresses:
  x.x.x.x:2377
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 4ab9917febca54791c5f071a9d1f404867857fcc
runc version: 54296cf40ad8143b62dbcaa1d90e520a2136ddfe
init version: 949e6fa
Security Options:
 apparmor
 seccomp
  Profile: default
Kernel Version: 4.4.0-70-generic
Operating System: Ubuntu 16.04.2 LTS
OSType: linux
Architecture: x86_64
CPUs: 8
Total Memory: 15.66 GiB
Name: name
ID: CMZP:AJOT:ELIE:T4NT:52JS:A6U6:LYE4:DNPW:LCJB:R2UR:XO3K:CDP6
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Username: intezerdev
Registry: https://index.docker.io/v1/
WARNING: No swap limit support
Labels:
 size=f8
 provider=azure
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

Zusätzliche Umgebungsdetails (AWS, VirtualBox, physisch usw.):
azurblau, mit Docker-Maschine

areswarm kinquestion statumore-info-needed versio17.03

Hilfreichster Kommentar

Dies wird erwartet; Beim Erstellen eines Dienstes gibt Docker Ihre Anmeldeinformationen nicht automatisch weiter. Das Übergeben von Anmeldeinformationen / Authentifizierungsinformationen ist eine explizite Aktion (von Entwurf), da diese Anmeldeinformationen im Schwarm gespeichert und an die Knoten verteilt werden, auf denen der Dienst bereitgestellt wird.

Um Anmeldeinformationen zu übergeben, verwenden Sie beim Erstellen des Dienstes die Option --with-registry-auth oder _aktualisieren_ Sie die Authentifizierungsinformationen eines vorhandenen Dienstes ( docker service update --with-registry-auth ).

Ich glaube nicht, dass hier ein Fehler vorliegt, aber lassen Sie mich wissen, ob das funktioniert hat oder wenn immer noch Probleme auftreten

Alle 3 Kommentare

Dies wird erwartet; Beim Erstellen eines Dienstes gibt Docker Ihre Anmeldeinformationen nicht automatisch weiter. Das Übergeben von Anmeldeinformationen / Authentifizierungsinformationen ist eine explizite Aktion (von Entwurf), da diese Anmeldeinformationen im Schwarm gespeichert und an die Knoten verteilt werden, auf denen der Dienst bereitgestellt wird.

Um Anmeldeinformationen zu übergeben, verwenden Sie beim Erstellen des Dienstes die Option --with-registry-auth oder _aktualisieren_ Sie die Authentifizierungsinformationen eines vorhandenen Dienstes ( docker service update --with-registry-auth ).

Ich glaube nicht, dass hier ein Fehler vorliegt, aber lassen Sie mich wissen, ob das funktioniert hat oder wenn immer noch Probleme auftreten

wrt Pull the image on the server , dann bereitstellen; Der Schwarmmodus "fixiert" Bilder an ihren Digest, also stellen Sie sicher, dass alle Instanzen Ihres Dienstes _exakt_ dieselbe Version Ihres Images ausführen. Dazu kontaktiert es die Registrierung und löst den "Digest" (unveränderliches Tag) auf. Dazu benötigt es Zugriff auf die Registry. Wenn das Auflösen des Digests fehlschlägt, greift Docker auf das image:tag Sie beim Erstellen des Dienstes angegeben haben, und verwendet ein lokales Image (sofern vorhanden); siehe https://github.com/docker/docker/issues/31518

Ich werde dieses Thema schließen, aber Sie können die Diskussion gerne fortsetzen, wenn Sie weitere Informationen benötigen 👍

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen