Moby: Mensaje de error al crear el servicio con una imagen alojada en un repositorio privado

Creado en 30 mar. 2017  ·  3Comentarios  ·  Fuente: moby/moby

Descripción

Recibo un error cada vez que creo un servicio en un clúster de enjambre con una imagen alojada en un repositorio privado en Docker Hub.
El servicio está funcionando, es solo el mensaje de error que se imprime cada vez que creo un servicio.

Pasos para reproducir el problema:

  1. Crea un repositorio privado en Docker Hub
  2. Crea un grupo de enjambres
  3. Iniciar sesión en Docker
  4. Extraiga la imagen en el servidor
  5. Crea un servicio con la imagen

Describe los resultados que recibiste:

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

Describe los resultados que esperabas:
Sin mensaje de error

Salida de 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

Salida de 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

Detalles adicionales del entorno (AWS, VirtualBox, físico, etc.):
azur, usando docker-machine

areswarm kinquestion statumore-info-needed versio17.03

Comentario más útil

Se espera esto; al crear un servicio, Docker no transmite automáticamente sus credenciales. Pasar credenciales / información de autenticación es una acción explícita (por diseño), ya que esas credenciales se almacenarán en el enjambre y se distribuirán a los nodos donde se implementa el servicio.

Para pasar credenciales, use la opción --with-registry-auth al crear el servicio, o para _actualizar_ la información de autenticación en un servicio existente ( docker service update --with-registry-auth ).

No creo que haya un error aquí, pero avíseme si funcionó o si todavía tiene problemas

Todos 3 comentarios

Se espera esto; al crear un servicio, Docker no transmite automáticamente sus credenciales. Pasar credenciales / información de autenticación es una acción explícita (por diseño), ya que esas credenciales se almacenarán en el enjambre y se distribuirán a los nodos donde se implementa el servicio.

Para pasar credenciales, use la opción --with-registry-auth al crear el servicio, o para _actualizar_ la información de autenticación en un servicio existente ( docker service update --with-registry-auth ).

No creo que haya un error aquí, pero avíseme si funcionó o si todavía tiene problemas

wrt Pull the image on the server , luego implementar; El modo de enjambre "fija" las imágenes a su resumen, así que asegúrese de que todas las instancias de su servicio ejecuten _exactamente_ la misma versión de su imagen. Para ello, se pondrá en contacto con el registro y resolverá el "resumen" (etiqueta inmutable). Para ello, necesita acceso al registro. Si falla la resolución del resumen, la ventana acoplable volverá a usar el image:tag que proporcionó al crear el servicio y usará una imagen local (si existe); ver https://github.com/docker/docker/issues/31518

Seguiré adelante y cerraré este problema, pero siéntase libre de continuar la discusión si necesita más información 👍

¿Fue útil esta página
0 / 5 - 0 calificaciones