denegado: acceso denegado al recurso denegado: acoplador

372

Estoy siguiendo este enlace para crear mi primera imagen acoplable y salió con éxito y ahora estoy tratando de insertar esta imagen en mi repositorio acoplable desde este enlace . Pero cada vez que intento insertar esta imagen en el repositorio, recibo este tipo de error.

denied: requested access to the resource is denied

ingrese la descripción de la imagen aquí

¿Alguien podría darme alguna pista sobre este problema? Cualquier ayuda sería apreciada.

Nota: He iniciado sesión con éxito en la ventana acoplable

Keyur Shah
fuente
Asegúrese de no cometer este error: stackoverflow.com/a/59626146/4954434
Jithin Pavithran
Asegúrate de confirmar tu correo electrónico. Si está pensando quién haría algo tan estúpido, no le confirmé mi correo electrónico antes de presionar.
Luv33preet

Respuestas:

553

Es posible que deba cambiar su repositorio de Docker a privado antes de presionar Docker.

Gracias a la respuesta proporcionada por Dean Wu y este comentario de ses , antes de presionar, recuerde cerrar sesión , luego inicie sesión desde la línea de comando a su cuenta de Docker Hub

# you may need log out first `docker logout` ref. https://stackoverflow.com/a/53835882/248616
docker login

Según los documentos :

You need to include the namespace for Docker Hub to associate it with your account.
The namespace is the same as your Docker Hub account name.
You need to rename the image to YOUR_DOCKERHUB_NAME/docker-whale.

Entonces, esto significa que debe etiquetar su imagen antes de presionar:

docker tag firstimage YOUR_DOCKERHUB_NAME/firstimage

y luego deberías poder empujarlo.

docker push YOUR_DOCKERHUB_NAME/firstimage
Webert Lima
fuente
43
No para mí. He intentado todas las combinaciones [host]/[namespace]/[repo]y sigo con el mismo error (es decir, tengo organizaciones y mi cuenta como espacio de nombres). Incluso lo intenté docker login .... No puedo empujar: - |
nicerobot
1
Hola, sigo tu comando. Error --- Respuesta de error del demonio: No existe esa imagen: ubuntu-nodejs: latest
Yash
34
¡Esta respuesta no debería haber sido marcada como aceptada! La solución proporcionada claramente no funciona como otros han indicado.
SamDevx
66
Tuve el mismo problema y resultó que no había iniciado sesión correctamente. El "inicio de sesión de Docker" se comporta de manera incómoda, mostró que "el inicio de sesión se realizó correctamente" incluso cuando ingresé una contraseña incorrecta. Entonces, para iniciar sesión correctamente, usé "docker login <url> --username = <username>". Publique esto, "docker push" funcionó como se esperaba.
Devesh Chanchlani
2
Esta respuesta no está completa y no funcionó para mí. Venu S proporcionó una respuesta completa que resolvió este problema para mí.
rm.rf.etc
184

Tuve el mismo problema al tomar el curso para principiantes de Docker. Resolví el problema haciendo un docker loginantes de la llamada push de Docker.

Dean Wu
fuente
99
Fwiw, yo estaba recibiendo credenciales error al obtener en docker login. sudo docker logintrabajó para mi. Esto me permitió impulsar mi repositorio privado.
johnsampson
2
Aparentemente, el seminario web de Docker no está actualizado.
Luís de Sousa
Advertencia con sudo - mira mi respuesta
rhoerbe
80

Tuve el mismo problema, pero la respuesta aceptada dada aquí no funcionó para mí. Intenté algunos pasos y pude moverme para finalmente empujarlo. Espero que esto ayude a alguien.

Aquí están los pasos trabajados para mí:

1) Inicie sesión en la ventana acoplable.

docker login -u sirimalla

2) Etiqueta la construcción de tu imagen

mi nombre de imagen aquí es: mylocalimage y por defecto tiene la etiqueta: latest
y mi nombre de usuario es: sirimalla como registrado en la nube de docker, y creé un repositorio público llamado: dockerhub

entonces mi repositorio personal se convierte ahora en: sirimalla / dockerhub y quiero insertar mi imagen con la etiqueta:myfirstimagepush

Etiqueté como a continuación:

docker tag mylocalimage:latest sirimalla/dockerhub:myfirstimagepush

3) Empujé la imagen a mi repositorio docker personal como se muestra a continuación

docker push sirimalla/dockerhub:myfirstimagepush

Y se aplicó con éxito a mi repositorio personal de Docker.

Venu S
fuente
2
Esta respuesta resolvió mi problema. Esta debería ser la respuesta aceptada. La otra respuesta no está completa y no funcionó para mí. Por ejemplo, la otra respuesta no menciona docker login. Hasta llegar a este hilo, no lo sabía docker login.
rm.rf.etc
en general, deberías usar sudo prefijando todos tus comandos ref projectatomic.io/blog/2015/08/…
wmitchell
Advertencia con sudo - vea mi respuesta
rhoerbe
1
Este era el cachorro.
Dave Hodgkinson
1
Sí, esta respuesta solo resolvió mi problema. Por favor, consulte esto a quien quiera resolver este problema.
Maha Lak
42

También es importante tener en cuenta que cuando etiqueta su imagen, la etiqueta usando el Espacio de nombres y luego su repositorio / mydevrepo . Esto me confundió al seguir los documentos de Docker. Después de eso usé:

docker login

Y luego empujé mi imagen usando el 'nombre etiquetado' .

docker push {namespace}/mydevrepo
Erick Boshoff
fuente
39

Utilice los siguientes comandos:

$ docker login
<enter user name and password for Docker Hub Repository>

$ docker tag first-image {docker-hub-username}/{default-repo-folder-name}:first-image

$ docker push {docker-hub-username}/{default-repo-folder-name}:first-image

Por ejemplo, tengo un repositorio público como manjeet86 / docker-repo, por lo que los comandos serían:

$ docker tag first-image manjeet86/docker-repo:first-image

$ docker push manjeet86/docker-repo:first-image

Solo ver en :lugar de /eso fue el truco. Esto funciona para mi. No sé si te permite etiquetar /también en lugar de :eso, pero eso puede ser para algún otro propósito.

https://docs.docker.com/engine/reference/commandline/tag/#examples

MSingh
fuente
1
Esto es lo que funcionó para mí, usando en :lugar de /, gracias.
Kris
Posible explicación del problema en este hilo: github.com/moby/moby/issues/31760#issuecomment-309812486
gp.
Gracias, eso fue todo. Debería ser la respuesta aceptada en mi humilde opinión :)
Nk54
10

La forma en que Docker maneja las ID de usuario y los repositorios puede ser un poco confusa. Supongamos que crea una cuenta de usuario xyz en Docker Hub. La nueva cuenta establece automáticamente un espacio de nombres xyz. Luego creas un repositorio llamado myrepo. El nombre del repositorio será en realidad xyz/myrepo.

Para empujar una imagen debes hacer:

docker push docker.io/xyz/myrepo

Puede agregar ": último" o una etiqueta diferente si es necesario.

Si recibe el requested access to the resource is deniedmensaje de error:

  1. Vaya a https://hub.docker.com/ e inicie sesión como xyz.
  2. Haga clic en su repositorio xyz / myrepo.
  3. Haz clic en Colaboradores.
  4. Agrega xyz como colaborador.
Paulo Merson
fuente
Entonces, ¿eso significa que no podemos enviar imágenes de un repositorio público de terceros?
sdinesh94
No funcionó para mí :(
Nom1fan
10

No estoy seguro de lo que sucedió con Docker Hub, pero ninguna de las soluciones publicadas funcionó para mí. Aquí está la solución que terminó funcionando para mí a partir de enero de 2018:

  1. Vaya a hub.docker.com y cambie su repositorio a privado
  2. En tu caparazón haz:

docker images

REPOSITORY TAG IMAGE ID CREATED SIZE verse_gapminder_gsl latest 023ab91c6291 3 minutes ago 1.975 GB verse_gapminder latest bb38976d03cf 13 minutes ago 1.955 GB rocker/verse latest 0168d115f220 3 days ago 1.954 GB

docker tag bb38976d03cf dockhubusername/verse_gapminder:mytag

docker login docker.io

docker push dockhubusername/verse_gapminder:mytag

  1. Regrese al Docker Hub y cambie el repositorio a público. Eso funcionó para mí.
Allaroundgames 2016
fuente
8

Docker también tiene un límite en la cantidad de repositorios privados que puede tener. Si está creando un repositorio privado presionando desde su máquina local, creará el repositorio pero no se puede empujar ni extraer nada más, y obtendrá el error "acceso denegado al recurso denegado".

rghazali
fuente
¿Cómo presionar siempre como repositorio público?
Raja Anbazhagan
7

SO: Ubuntu16.04

Motivo: eliminé el archivo de configuración del cliente ( ~ / .docker / config.json )

Solución:

  • Reinicia la ventana acoplable.
    reinicio de la ventana acoplable de servicio .
  • Necesita ingresar información de inicio de sesión, luego genera el archivo de configuración automáticamente.
    inicio de sesión de Docker --username = yourdockerhubername [email protected]
Canción
fuente
1
Esta fue la única solución que funcionó para mí. Había actualizado mi Docker y, por alguna razón, mvn dockerfile: push falló con esta excepción. Eliminar este config.json lo arregló.
anand1st
Esto también me ayudó. Me di cuenta de que para iniciar sesión no debería poner la url o si necesito especificar la url de docker login https://index.docker.io/v1/ -u=yourusername
Docker
7

Mi problema era simplemente usar caracteres no válidos (un extra /) en el nombre de mi imagen:

myusername/something/image

es un nombre de imagen no válido Prueba myusername / something-image. Espero que esto ayude a alguien.

patrickbadley
fuente
¡Qué mensaje de error tan horrible e inespecífico! Estaba haciendo lo mismo. Además, no permitirá caracteres especiales repetidos , por ejemplo __.
ijoseph
Funciona para mi, gracias!
Kenny Lee
6

Tuve el mismo problema hoy. Lo único que funcionó para mí fue iniciar sesión explícitamente en "docker.io" :

docker login docker.io

Intenté varios otros nombres, y el inicio de sesión parecería funcionar, pero luego daría lugar al siguiente error.

el acceso solicitado al recurso es denegado

jsight
fuente
2
Esto también es lo que resolvió el problema para mí. Lo intenté docker loginsin éxito, pero lo explícito docker.ioal final hizo el truco.
bromea el
Esto fue para mí
Glitcher,
El inicio de sesión explícito en docker.io no funcionó para mí. Iniciar sesión funcionó en el pasado, dejó de funcionar ahora.
rhoerbe
5

También estaba con este problema, probé las soluciones aquí presentes, pero en vano, me conecté correctamente, al menos de acuerdo con la salida de, docker loginpero aún no podía empujar la imagen. Lo que finalmente funcionó fue simplemente hacer:

docker logout

Y, de docker loginnuevo, fue tan trivial. No estoy seguro de lo que sucedió, pero forzar el reinicio de sesión funcionó.

Hito
fuente
1
¡También me ayudó!
Levente Orbán
1
Sí, con cerrar sesión, vuelve a funcionar para mí. ¡Gracias!
Nam G VU
4

Si enfrenta este problema mientras usa Azure Container Registry, puede resolverlo iniciando sesión primero en su registro.

docker login yourregistry.azurecr.io

Y luego etiquete su imagen para que coincida con el nombre de host de su registro.

docker image tag yourimagename:[version] yourregistry.azurecr.io/yourimagename:[version]

Y luego finalmente empujarlo.

docker push yourregistry.azurecr.io/yourimagename:[version]
hendryanw
fuente
1
Viniendo de Azure, ¡esto es lo que ayudó! ¡No es el espacio de nombres sino el nombre de host del registro la primera parte de la etiqueta!
binaryguy
4

Para aquellos que intentan llevar la imagen a su propio Administrador de repositorio de Nexus, haga lo siguiente:

1) Inicie sesión en su Nexus Repository Manager (el puerto 8443 está asociado con un repositorio de host Docker específico)

sudo docker login xxx.mydomain.com:8443

2) Etiquete la imagen CON SU SERVIDOR NEXUS IP / DNS

sudo docker tag myimage:latest xxx.mydomain.com:8443/myimage:1.0.0

3) Empuje la imagen

sudo docker push xxx.mydomain.com:8443/myimage:1.0.0
Phil
fuente
Tuve un problema en el complemento docker de jenkins que siempre se refería a docker.io. Etiquetar como xxx.mydomain.com:8443/myimage:1.0.0 resolvió el problema. Asegúrese de omitir el procotol y / v2 / stuff.
Himmet Avsar
por qué agregar puerto Y cuyo puerto para agregar cerca de xxx.mydomain.com. 8443 es fot https spring boot. ¿Qué pasa si es una aplicación angular?
P Satish Patro
1
@PSatishPatro Cuando su repositorio se resuelve en un puerto http / https específico, la etiqueta necesitará saber dónde empujarlo (ya que en realidad no le dice a dónde ir, como parámetro), como se mencionó anteriormente, debe ser el URL exacta como el repositorio completo de tu nexus.
Phil
3

Inicie sesión desde la aplicación. He estado intentando solo desde la terminal sin suerte.

Esta es la versión 17.06.1

ingrese la descripción de la imagen aquí

Ignacio Pascual
fuente
En MacOS, esta fue la solución para mí.
Vagari
3

Solución de trabajo simple:

Vaya aquí https://hub.docker.com/para crear un repositorio PRIVADO con nombre, por ejemplo, johnsmith/private-repositoryeste es el NAME/REPOSITORYque usará para su imagen cuando construya la imagen.

  • Primero, docker login

  • En segundo lugar, uso " docker build -t johnsmith/private-repository:01 ." para crear una imagen, y uso " docker images" para confirmar la imagen creada, como en este cuadro amarillo a continuación: (lo siento, no puedo pegar el formato de tabla sino solo la cadena de texto)

johnsmith / private-repository (REPOSITORY) 01 (TAD) c5f4a2861d6e (ID DE IMAGEN) hace 2 días (CREADO) 305MB (TAMAÑO)

  • Tercero, yo uso docker push johnsmith/private-repository:01

¡Hecho!

Estiércol
fuente
2

Mi respuesta está relacionada con problemas similares de Azure DevOps que tuve con la siguiente canalización común (es más específica pero podría ayudar a alguien a ahorrar tiempo):

  1. Obtenga fuentes de github
  2. Construir imagen acoplable
  3. Empuje la imagen de docker a dockerhub

El error que recibí al denied: requested access to the resource is deniedenviarme me envió aquí.

Tenga cuidado con la variable $(Build.Repository.Name)incluida en el nombre de su imagen. Por defecto, es el nombre del repositorio de github, pero para que su trabajo funcione, debería serlo dockerhub_account_username/your_dockerhub_repository_name.

Reemplace $(Build.Repository.Name)con dockerhub_account_username/your_dockerhub_repository_nameen su campo de nombre de imagen para los pasos de compilación y inserción.

La api dockerhub necesita esto para saber dónde empujar la imagen.

Gabriel P.
fuente
2

Funcionó después de que cambié " docker login https://hub.docker.com " a " docker login docker.io " y proporcioné nombre de usuario y contraseña.

Luego siga los siguientes comandos:

docker tag local-image:tagname new-repo:tagname

docker push new-repo:tagname

NOTA: "new-repo" contendrá "Docker ID + Repo name"

Aquí he creado el repositorio "ubuntu" en Docker Hub antes de ejecutar el siguiente comando.

Ejemplo:

docker tag alok/ubuntu:latest aloktiwari2007/ubuntu:latest

docker push aloktiwari2007/ubuntu:latest
Alok Tiwari
fuente
El punto importante para mí era tagname en el comando docker tag que debería seguir: <dockeruserid> / <nombre del repositorio remoto>: <tag>. Se debe usar el mismo identificador de etiqueta en el comando push.
Tanmay Patil
1

Si aún falla después docker login, asegúrate de que el repositorio al que intentas ingresar se haya creado en primer lugar.

louis_guitton
fuente
1

También estoy teniendo este problema. Resulta que estoy usando el nivel gratuito e intento insertar más de 1 imagen en el repositorio privado. Hacer 1 imagen privada y el resto público funcionó para mí.

Shige
fuente
1

En mi caso, estaba presionando a una organización donde estoy en un equipo que tiene permisos de administrador para el repositorio.

entonces mi comando push fue: docker push org-name/image-name

Podría presionar con éxito a nombre de usuario / nombre de imagen pero no a la organización. Verifiqué tres veces los permisos. Nada funcionó.

La solución fue eliminar el repositorio de Docker Hub e impulsar nuevamente utilizando: docker push org-name/image-name

Por lo que vale, creo que el repositorio fue originalmente promovido antes de que la cuenta se convirtiera en una organización.

schmidlop
fuente
1

Entonces, en caso de que sea útil para cualquiera ...
Tuve este mismo problema y aquí está mi problema y el FIX.

  • Tenía una computadora en mi red de prueba llamada 'galaxy'.
  • Configuré el registro de Docker usando el siguiente comando de ejecución:

    sudo docker run -d 
    --restart=always \
    --name registry \
    -v /srv/registry/certs:/certs \
    -v /srv/registry/storage:/var/lib/registry \
    -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
    -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/galaxy.cert \
    -e REGISTRY_HTTP_TLS_KEY=/certs/galaxy.key \
    -p 443:443 \
    registry:2
    

    Luego estaba tratando de enviar una imagen a la galaxia desde una computadora portátil en la red, así que hice esto:

    docker login galaxy
    

    Esto me daría un error que diría:

    Login did not succeed, error: Error response from daemon: 
        Get https://galaxy/v2/: x509: certificate signed by unknown authority
    

    Curiosamente, la solución a este problema fue hacer un inicio de sesión como este:

    docker login galaxy:443
    

    Eso resultó en un inicio de sesión exitoso.

    Entonces traté de llevar la imagen de mi computadora portátil a 'galaxy'.
    Ya había creado una etiqueta para mi imagen que se veía así:

    galaxy/myImage:0.0.1
    

    Así que traté de presionarlo haciendo esto:

    docker push galaxy/myImage:0.0.1
    

    A lo que obtuve la respuesta:

    The push refers to repository [docker.io/galaxy/myImage]
    7ab460574f86: Preparing 
    1aecaf56754d: Preparing 
    1df1b5f06ca4: Preparing 
    denied: requested access to the resource is denied
    

    Por extraño que parezca, descubrí que la solución para esto era etiquetar primero la imagen de la siguiente manera:

    docker tag myImage:0.0.1 galaxy:443/myImage:0.0.1
    

    ... y luego haz el empuje así:

    docker push galaxy:443/myImage:0.0.1
    

    Entonces, por alguna razón, tuve que incluir el puerto en la etiqueta como parte requerida del nombre del repositorio.



    Espero que esto ayude a otros.

  • Deoji
    fuente
    1

    todas las respuestas anteriores fueron correctas, solo quiero agregar una información que vi que no se mencionó;

    Si el proyecto es un proyecto privado para empujar correctamente la imagen, debe configurarse un token de acceso personal o desplegar token con la clave read_registry habilitada.

    fuente: https://gitlab.com/help/user/project/container_registry#using-with-private-projects

    Espero que esto sea útil (también si la pregunta se ha publicado hasta ahora)

    AtomiX84
    fuente
    1

    Esta respuesta es tanto para mi futuro como para cualquier otra persona. Me encontré con este problema exacto cuando inicié sesión correctamente, pero intento ingresar a un repositorio privado cuando mi número de repositorios privados es mayor o igual al límite permitido por mi plan.

    No estoy exactamente seguro de cómo pude crear demasiados repositorios privados, pero si mi plan incluye 5 repositorios privados, y de alguna manera tengo 6, entonces este es el error que recibiré:

    denied: requested access to the resource is denied

    En mi caso, es posible que termine con demasiados repositorios privados porque tengo mi visibilidad predeterminada establecida en privado:

    Visibilidad predeterminada

    Aquí es donde determina cuántos repositorios privados puede tener:

    Planes de facturación

    Una vez que hice público el problemático repositorio, el problema se hizo evidente:

    Hacer que el repositorio sea privado 5 de 5

    Matthew James Briggs
    fuente
    1

    Realmente espero que esto ayude a alguien (que mira las respuestas finales primero como yo):

    Intenté escribir continuamente

    docker push user/repo/tag
    

    En lugar

    docker push user/repo:tag
    

    Como también hice mi etiqueta así:

    docker tag image user/repo/tag
    

    ... se rompió todo el infierno perder.

    Sinceramente espero que no repitas mi error. Perdí como 30 minutos en esto ...

    GeorgiG
    fuente
    1

    Tardo en agregar otra respuesta, pero la respuesta aceptada y las respuestas restantes que mencionan no docker logintienen un caso límite para resolver los problemas que otros están indicando en los comentarios.

    docker login <private-repo-host>:<port>

    El énfasis en la portnecesidad de ingresar es probablemente la solución para aquellos que todavía están buscando. docker logino docker login <private-repo-host>puede conectarse sin problemas, pero cuando llegue el momento de enviar imágenes, obtendrá el mismo error que OP.

    Es decir, puede conectarse sin definir host o puerto y aún así obtener:

    ...

    Inicio de sesión exitoso

    En mi caso, estoy usando un registro de docker incorporado de GitLab autohospedado, que se configuró para usar el puerto 4567. Puede ser conveniente verificar desde qué puerto se debe acceder al registro. Sin especificar que dicho puerto docker login <our.gitlab.host>iniciaría sesión con éxito, pero da el mismo problema que el OP preguntó:

    ...

    El empuje se refiere al repositorio [...]

    denegado: acceso prohibido

    Si está utilizando docker.io/dockerhub, es probable que no tenga este problema, pero si tiene una solución de registro privada / alojada, la probabilidad aumenta; debe iniciar sesión explícitamente utilizando el host y el puerto para el registro de docker .

    Arthur Weborg
    fuente
    Gracias, de gran ayuda!
    Alfabravo
    1

    No permita engañar hacia el nombre de la etiqueta.
    Mi enfoque para resolver esto:

    Command 1(Create Tag): docker tag my-nginx:latest rsachde/nginx-repository/trys:1.0 (Didn't push)
    Command 2(Push): docker push rsachde/nginx-repository/try:1.0 
    

    Salida:

    denegado: se denegó el acceso solicitado al recurso


    Command 1.1(Create Tag): docker tag my-nginx:latest rsachde/nginx-repository/:trys 
    Command 2.2(Push): docker push rsachde/nginx-repository:trys 
    

    Salida:

    intentos: resumen: sha256: 405b6f0ae25772ef71b8f59fd6a56ff9b426f50bd24bac2b5db41f65efd3387c tamaño: 1365

    Engañar es etiqueta, asegúrese de entender eso.

    Ria Sachdeva
    fuente
    1

    la forma más fácil es usar el escritorio de Docker (para Windows 10 o superior y Mac)

    primer registro en docker hub proporcionando dockerID

    luego haga clic en el icono de escritorio de Docker en su máquina y -> Preferencias -> luego inicie sesión con Docker Hub docker / id y contraseña.

    ingrese la descripción de la imagen aquí

    Jayani Sumudini
    fuente
    0

    cambie el nombre de su imagen a nombre de usuario / etiqueta de nombre de imagen docker your-current-image / current-image dockerhub-username / some-name: your-tag (ejemplo: último)

    Italo José
    fuente
    0

    Intente cerrar sesión en la aplicación "Docker para Windows" y cierre la sesión del sitio https://hub.docker.com/ y luego realice "inicio de sesión de docker" y "empuje de docker". Me ayudó mucho.

    Vladimir
    fuente