negado: acesso solicitado ao recurso foi negado: janela de encaixe


372

Estou seguindo este link para criar minha primeira imagem de janela de encaixe e ela foi bem-sucedida e agora estou tentando inserir essa imagem no meu repositório de janela de encaixe a partir deste link . Mas sempre que estou tentando enviar esta imagem para o repositório, recebo esse tipo de erro.

denied: requested access to the resource is denied

insira a descrição da imagem aqui

Alguém poderia me dar alguma dica sobre esse problema? Qualquer ajuda seria apreciada.

Nota: Eu entrei com êxito no docker


Certifique-se de não cometer este erro: stackoverflow.com/a/59626146/4954434
Jithin Pavithran

Certifique-se de confirmar seu email. Se você está pensando em quem faria uma coisa tão estúpida, não confirmei meu e-mail antes de enviar.
Luv33preet 02/06

Respostas:


553

Pode ser necessário alternar o repo de docker para privado antes do envio do docker.

Graças à resposta fornecida por Dean Wu e este comentário por ses , antes de enviar, lembre-se de sair e , em seguida, faça login na linha de comando da sua conta do hub docker

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

De acordo com os 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.

Portanto, isso significa que você deve marcar sua imagem antes de pressionar:

docker tag firstimage YOUR_DOCKERHUB_NAME/firstimage

e então você deve poder pressioná-lo.

docker push YOUR_DOCKERHUB_NAME/firstimage

43
Não para mim. Eu tentei todas as combinações [host]/[namespace]/[repo]e ainda o mesmo erro (ou seja, tenho organizações e minha conta como o espaço para nome). Até tentei docker login .... Não consigo empurrar: - |
Nicerobot

11
hii eu sigo o seu comando got Error --- Resposta de erro do daemon: Não existe imagem: ubuntu-nodejs: latest
Yash

34
Esta resposta não deveria ter sido marcada como aceita! A solução fornecida claramente não funciona como outros indicaram.
SamDevx

6
Eu tive o mesmo problema e verificou-se que não estava conectado corretamente. "login docker" se comporta de maneira desajeitada, mostrou "login com êxito", mesmo quando eu digitei a senha errada. Portanto, para fazer o login de forma adequada, usei o "docker login <url> --username = <username>". Poste isto, "docker push" funcionou como esperado.
Devesh Chanchlani

2
Esta resposta não está completa e não funcionou para mim. Venu S forneceu uma resposta completa que resolveu esse problema para mim.
precisa saber é o seguinte

184

Eu tive o mesmo problema ao fazer o curso para iniciantes no docker. Resolvi o problema executando uma docker loginchamada antes da chamada do docker.


8
FWIW, eu estava ficando credenciais recebendo erro no docker login. sudo docker logintrabalhou para mim. Isso me permitiu empurrar meu repo privado.
johnsampson

11
Aparentemente, o webinar do Docker está desatualizado.
Luís de Sousa

Advertência com sudo - veja minha resposta
rhoerbe

80

Eu tive o mesmo problema, mas a resposta aceita fornecida aqui não funcionou para mim. Eu tentei alguns passos e fui capaz de dar um empurrão final. Espero que isso ajude alguém.

Aqui estão as etapas trabalhadas para mim:

1) Faça login na janela de encaixe.

docker login -u sirimalla

2) Marque sua construção de imagem

meu nome de imagem aqui é: mylocalimage e, por padrão, possui a tag: latest
e meu nome de usuário é: sirimalla como registrado na nuvem docker, e criei um repositório público chamado: dockerhub

então meu repositório pessoal se torna agora: sirimalla / dockerhub e eu quero enviar minha imagem com a tag:myfirstimagepush

Eu marquei como abaixo:

docker tag mylocalimage:latest sirimalla/dockerhub:myfirstimagepush

3) Enviei a imagem para o meu repositório de docker pessoal como abaixo

docker push sirimalla/dockerhub:myfirstimagepush

E foi enviado com sucesso ao meu repositório pessoal de estivadores.


2
Esta resposta resolveu meu problema. Essa deve ser a resposta aceita. A outra resposta não está completa e não funcionou para mim. Por exemplo, a outra resposta não faz menção docker login. Até chegar a esse tópico, eu não sabia docker login.
precisa saber é o seguinte

em geral, você deve usar o sudo como prefixo de todos os seus comandos ref projectatomic.io/blog/2015/08/…
wmitchell

Advertência com sudo - veja minha resposta
rhoerbe

11
Este era o filhote.
Dave Hodgkinson

11
Sim, esta resposta só resolveu meu problema. Por favor, indique quem quiser resolver este problema.
Maha Lak

42

Importante também notar é que, quando você codifica sua imagem, identifica-a usando o Namespace e, em seguida, seu repositório / mydevrepo . Isso me confundiu ao seguir os documentos do Docker. Depois disso eu usei:

docker login

E então eu empurrei minha imagem usando o 'nome marcado' .

docker push {namespace}/mydevrepo

39

Use os comandos abaixo:

$ 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 exemplo, eu tenho repositório público como manjeet86 / docker-repo, então os comandos seriam:

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

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

Basta ver, em :vez /disso, era o truque. Funciona para mim. Eu não sei se ele permite que você marque /também, :mas isso pode ser para algum outro propósito.

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


11
Isto é o que funcionou para mim, usando em :vez de /, obrigado.
Kris

Possível explicação para o problema neste tópico: github.com/moby/moby/issues/31760#issuecomment-309812486
gp.

Obrigado, foi isso. Deve ser o imho resposta aceita :)
Nk54

10

A maneira como o docker lida com IDs de usuário e repositórios pode ser um pouco confuso. Digamos que você crie uma conta de usuário xyz no docker hub. A nova conta estabelece automaticamente um espaço para nome xyz. Então você cria um repositório chamado myrepo. O nome do repositório será realmente xyz/myrepo.

Para enviar uma imagem, você deve fazer:

docker push docker.io/xyz/myrepo

Você pode adicionar ": latest" ou uma tag diferente, se necessário.

Se você receber a requested access to the resource is deniedmensagem de erro:

  1. Vá para https://hub.docker.com/ e faça login como xyz.
  2. Clique no seu repositório xyz / myrepo.
  3. Clique em Colaboradores.
  4. Adicione xyz como colaborador.

então isso significa que não podemos enviar imagens de um repositório público de terceiros?
Sdinesh94

Não funcionou para mim :(
Nom1fan 01 de

10

Não sei o que aconteceu com o docker hub, mas nenhuma das soluções postadas funcionou para mim. Aqui está a solução alternativa que acabou funcionando para mim em janeiro de 2018:

  1. Acesse hub.docker.com e altere seu repositório para private
  2. No seu shell, faça:

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. Volte ao hub do docker e altere o repo para público. Isso funcionou para mim.

8

O Docker também tem um limite no número de repositórios particulares que você pode ter. Se você estiver criando um repositório privado pressionando a partir de sua máquina local, ele criará o repositório, mas nada mais poderá ser enviado ou retirado dele, e você receberá o erro "acesso solicitado ao recurso negado".


como sempre empurrar como repo público?
Raja Anbazhagan

7

Sistema operacional: Ubuntu16.04

Razão: excluí o arquivo de configuração do cliente ( ~ / .docker / config.json )

Solução:

  • Reinicie a janela de encaixe.
    reinicialização do docker de serviço .
  • Ele precisa inserir informações de login e, em seguida, gera o arquivo de configuração automaticamente.
    docker login --username = yourdockerhubername --email=youremail@company.com

11
Esta foi a única solução que funcionou para mim. Eu atualizei meu Docker e, por algum motivo, mvn dockerfile: push falhou com essa exceção. A exclusão deste config.json foi corrigida.
anand1st

Isso também me ajudou. Percebi que para o login ou eu não deveria colocar a url ou se preciso especificar hub janela de encaixe url eu deveria colocardocker login https://index.docker.io/v1/ -u=yourusername
Ronan Quillevere

7

Meu problema foi simplesmente usar caracteres inválidos (um / extra) no nome da minha imagem:

myusername/something/image

é um nome de imagem inválido. Tente myusername / algo-imagem. Espero que isso ajude alguém.


Uma mensagem de erro horrível e inespecífica! Eu estava fazendo a mesma coisa. Além disso, não permitirá caracteres especiais repetidos , por exemplo __.
22319 ijoseph

Funciona para mim, obrigado!
Kenny Lee

6

Eu tive o mesmo problema hoje. A única coisa que funcionou para mim foi acessar explicitamente o "docker.io" :

docker login docker.io

Tentei vários outros nomes e o logon parecia funcionar, mas mais tarde resultaria no seguinte erro.

acesso solicitado ao recurso é negado


2
Foi também isso que resolveu o problema para mim. Eu tentei docker loginsem sucesso, mas o explícito docker.iono final fez o truque.
Jooks

Este foi para mim
Glitcher

o login explícito no docker.io não funcionou para mim. O login funcionou no passado, parou de funcionar agora.
Rhoerbe 17/07/2018

5

Eu também estava com esse problema, testei as soluções aqui presentes, mas sem sucesso, estava logado corretamente, pelo menos de acordo com a saída de docker loginmas ainda não consegui enviar a imagem. O que finalmente funcionou foi simplesmente fazer:

docker logout

E, docker loginnovamente, era tão trivial. Não sei o que aconteceu, mas forçar o novo login funcionou.


11
Isso também me ajudou!
Levente Orbán

11
Sim, com o logout, ele volta a trabalhar para mim. Obrigado!
Nam G VU

4

Se você enfrentar esse problema enquanto estiver usando o Registro de Contêiner do Azure, poderá resolvê-lo entrando no seu registro primeiro.

docker login yourregistry.azurecr.io

E marque sua imagem para corresponder ao nome do host do seu registro.

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

E então finalmente empurre.

docker push yourregistry.azurecr.io/yourimagename:[version]

11
Vindo do Azure, foi isso que ajudou! Não é o espaço para nome, mas o nome do host do registro que é a primeira parte da tag!
precisa saber é

4

Para aqueles que tentam enviar a imagem para o seu próprio Nexus Repository Manager, faça o seguinte:

1) Faça logon no Nexus Repository Manager (a porta 8443 está associada a um repositório de host do Docker específico)

sudo docker login xxx.mydomain.com:8443

2) Marque a imagem COM SEU NEXUS SERVER IP / DNS

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

3) Empurre a imagem

sudo docker push xxx.mydomain.com:8443/myimage:1.0.0

Eu tive um problema no plugin jenkins docker sempre consultando o docker.io. Marcar como xxx.mydomain.com:8443/myimage:1.0.0 resolveu o problema. Certifique-se de omitir o procotol e / v2 / stuff.
Himmet Avsar 6/03/19

por que adicionar porta. E cuja porta para adicionar perto de xxx.mydomain.com. 8443 é para https boot de primavera. E se se é a aplicação angular
P Satish Patro

11
@PSatishPatro Quando o seu repositório resolve uma porta http / https específica, a tag precisa saber para onde enviá-la (como você na verdade não diz para onde ir - como parâmetro), como mencionado acima, ele deve ser o URL exato como o repositório completo do seu nexus.
Phil


3

Solução de trabalho simples:

Vá aqui https://hub.docker.com/para criar um repositório PRIVADO com nome, por exemplo, johnsmith/private-repositoryeste é o que NAME/REPOSITORYvocê usará para sua imagem ao criar a imagem.

  • Primeiro, docker login

  • Segundo, eu uso " docker build -t johnsmith/private-repository:01 ." para criar imagem e " docker images" para confirmar a imagem criada, como nesta caixa amarela abaixo: (desculpe, não posso colar o formato da tabela, mas apenas a sequência de texto)

johnsmith / private-repository (REPOSITORY) 01 (TAD) c5f4a2861d6e (ID DE IMAGEM) 2 dias atrás (CRIADO) 305MB (SIZE)

  • Terceiro, eu uso docker push johnsmith/private-repository:01

Feito!


2

Minha resposta está relacionada a problemas semelhantes do Azure DevOps que tive com o seguinte pipeline comum (é mais específico, mas pode ajudar alguém a economizar tempo):

  1. Obter fontes do github
  2. Criar imagem da janela de encaixe
  3. Enviar imagem do docker para o dockerhub

O erro que recebi no push denied: requested access to the resource is deniedme enviou aqui.

Cuidado com a variável $(Build.Repository.Name)incluída no nome da sua imagem. Por padrão, é o nome do repositório do github, mas para o seu envio funcionar, deve ser dockerhub_account_username/your_dockerhub_repository_name.

Substitua $(Build.Repository.Name)por dockerhub_account_username/your_dockerhub_repository_nameno campo de nome da imagem para as etapas de compilação e envio.

Isso é necessário pelo dockerhub api para saber para onde enviar a imagem.


2

Funcionou depois que eu mudei o " docker login https://hub.docker.com " para " docker login docker.io " e forneci o nome de usuário e a senha.

Em seguida, siga os comandos abaixo:

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

docker push new-repo:tagname

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

Aqui eu criei o repo "ubuntu" no Docker Hub antes de executar o comando abaixo.

Exemplo:

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

docker push aloktiwari2007/ubuntu:latest

O ponto importante para mim foi o nome da tag no comando docker tag, que deveria estar seguindo - <dockeruserid> / <nome do repositório remoto>: <tag>. O mesmo identificador de tag deve ser usado no comando push.
precisa

1

Se ainda assim falhar docker login, verifique se o repositório para o qual você está tentando enviar foi criado.


1

Eu também estou tendo esse problema. Acontece que estou usando o nível gratuito e tentando enviar mais de uma imagem no repositório privado. Tornar uma imagem privada e o resto público funcionou para mim.


1

No meu caso, eu estava enviando para uma organização em que estou em uma equipe que possui permissões de administrador para o repositório.

então meu comando push foi: docker push org-name/image-name

Eu poderia enviar com sucesso para nome de usuário / nome da imagem, mas não para a organização. Eu tripliquei as permissões. Nada funcionou.

A solução foi excluir o repositório do docker hub e atualizar novamente usando: docker push org-name/image-name

Pelo valor, acho que o repo foi originalmente enviado antes que a conta fosse convertida em uma organização.


1

Portanto, caso seja útil para qualquer pessoa ...
Eu tive esse mesmo problema e aqui está o que era o meu problema e o FIX.

  • Eu tinha um computador na minha rede de teste chamado 'galaxy'.
  • Eu configurei o registro do docker usando o seguinte comando de execução:

    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
    

    Então, eu estava tentando enviar uma imagem para a galáxia de um laptop na rede, então fiz isso:

    docker login galaxy
    

    Isso me daria um erro que diria:

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

    Estranhamente, a correção para esse problema era fazer um login como este:

    docker login galaxy:443
    

    Isso resultou em um login bem-sucedido.

    Então tentei enviar a imagem do meu laptop para a 'galáxia'.
    Eu já havia criado uma tag para minha imagem que se parecia com isso:

    galaxy/myImage:0.0.1
    

    Então, eu tentei empurrá-lo fazendo isso:

    docker push galaxy/myImage:0.0.1
    

    Para o qual eu recebi a resposta:

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

    Curiosamente, descobri que a correção para isso era primeiro marcar a imagem da seguinte maneira:

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

    ... e faça o push desta maneira:

    docker push galaxy:443/myImage:0.0.1
    

    Então, por algum motivo, tive que incluir a porta na tag como parte necessária do nome do repositório.



    Espero que isso ajude os outros.


  • 1

    todas as respostas anteriores estavam corretas, quero apenas adicionar uma informação que vi que não foi mencionada;

    Se o projeto for um projeto privado para enviar corretamente a imagem, será necessário configurar um token de acesso pessoal ou implantar o token com a chave read_registry ativada.

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

    espero que isso seja útil (também se a pergunta for publicada até o momento)


    1

    Essa resposta é tanto para o meu eu futuro quanto para qualquer outra pessoa. Encontrei esse problema exato ao fazer logon corretamente, mas estou tentando enviar para um repositório particular quando meu número de repositórios particulares é maior ou igual ao limite permitido pelo meu plano.

    Não sei exatamente como consegui criar muitos repositórios particulares, mas se meu plano incluir 5 repositórios particulares e, de alguma forma, tiver 6, esse é o erro que receberei:

    denied: requested access to the resource is denied

    No meu caso, é possível que eu tenha acabado com muitos repositórios particulares porque tenho minha visibilidade padrão definida como privada:

    Visibilidade padrão

    É aqui que você determina quantos repositórios particulares você pode ter:

    Planos de cobrança

    Depois que tornei público o repositório problemático, o problema ficou aparente:

    Tornar o repositório privado 5 de 5


    1

    Eu realmente espero que isso ajude alguém (que olha as respostas finais primeiro como eu):

    Eu tentei continuamente digitar

    docker push user/repo/tag
    

    Em vez de

    docker push user/repo:tag
    

    Desde que eu também fiz minha tag assim:

    docker tag image user/repo/tag
    

    ... todo o inferno quebrou perder.

    Sinceramente, espero que você não repita meu erro. Eu desperdicei uns 30 minutos nisso ...


    1

    Estou demorando para adicionar mais uma resposta, mas a resposta aceita e as respostas restantes mencionadas docker loginestão faltando um caso extremo para resolver os problemas que outras pessoas estão comentando nos comentários.

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

    A ênfase na portnecessidade de inserção é provavelmente a solução para aqueles que ainda estão pesquisando. docker loginoudocker login <private-repo-host> pode se conectar sem problemas, mas quando chegar a hora de enviar imagens, você receberá o mesmo erro do OP.

    Ou seja, você pode conectar-se sem host ou porta de definição e ainda assim obter:

    ...

    Login com êxito

    No meu caso, estou usando um docker-registry interno do GitLab auto-hospedado, que foi configurado para usar a porta 4567. Pode ser aventureiro verificar em qual porta o registro deve ser acessado. Sem especificar, a porta docker login <our.gitlab.host>entraria com êxito, mas forneceria o mesmo problema que o OP consultou:

    ...

    O push refere-se ao repositório [...]

    negado: acesso proibido

    Se você estiver usando o docker.io/dockerhub, provavelmente não terá esse problema, mas se tiver uma solução de registro auto-hospedado / privado, a probabilidade aumentará, será necessário fazer login explicitamente usando o host e a porta do registro do docker .


    Obrigado, muito útil!
    Alfabravo

    1

    Não permita que o nome da tag seja enganado.
    Minha abordagem para resolver isso:

    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 
    

    Resultado:

    negado: acesso solicitado ao recurso foi negado


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

    Resultado:

    trys: digest: sha256: 405b6f0ae25772ef71b8f59fd6a56ff9b426f50bd24bac2b5db41f65efd3387c tamanho: 1365

    Enganar é Tag, certifique-se de entender isso.


    1

    a maneira mais fácil é usar a área de trabalho do docker (para Windows 10 ou superior e mac)

    primeira inscrição no hub docker, fornecendo dockerID

    depois clique no ícone da área de trabalho da janela de encaixe na sua máquina e -> Preferências -> faça login nela usando a janela de encaixe / identificação e a senha do hub da janela de encaixe.

    insira a descrição da imagem aqui


    0

    renomeie sua imagem para nome de usuário / docker name da imagem tag your-current-image / current-image dockerhub-username / some-name: your-tag (exemplo: mais recente)


    Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
    Licensed under cc by-sa 3.0 with attribution required.