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

Keyur Shah
fonte
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
Webert Lima
fonte
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.

Dean Wu
fonte
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.

Venu S
fonte
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
Erick Boshoff
fonte
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

MSingh
fonte
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.
Paulo Merson
fonte
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.
Allaroundgames 2016
fonte
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".

rghazali
fonte
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 protected]
Canção
fonte
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.

patrickbadley
fonte
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

jsight
fonte
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.

Olá para
fonte
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]
hendryanw
fonte
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
Phil
fonte
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

Faça login no aplicativo. Eu tenho tentado apenas do terminal sem sorte.

Esta é a versão 17.06.1

insira a descrição da imagem aqui

Ignacio Pascual
fonte
No MacOS, essa foi a solução para mim.
Vagari 19/10/19
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!

Estrume
fonte
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.

Gabriel P.
fonte
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
Alok Tiwari
fonte
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.

louis_guitton
fonte
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.

Shige
fonte
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.

schmidlop
fonte
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.

  • Deoji
    fonte
    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)

    AtomiX84
    fonte
    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

    Matthew James Briggs
    fonte
    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 ...

    GeorgiG
    fonte
    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 .

    Arthur Weborg
    fonte
    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.

    Ria Sachdeva
    fonte
    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

    Jayani Sumudini
    fonte
    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)

    Italo José
    fonte
    0

    Tente sair do aplicativo "Docker for Windows" e saia do site https://hub.docker.com/ e depois execute "login do docker" e "push do docker". Isso ajudou para mim.

    Vladimir
    fonte