development

거부 됨 : 리소스에 대한 요청 된 액세스가 거부되었습니다. : docker

big-blog 2020. 3. 17. 23:40
반응형

거부 됨 : 리소스에 대한 요청 된 액세스가 거부되었습니다. : docker


첫 번째 docker Image를 만들기 위해이 링크따르고 성공적으로 진행되었으며 이제이 이미지를이 링크 에서 내 docker 저장소로 푸시하려고합니다 . 그러나이 이미지를 repository에 푸시하려고 할 때 마다이 유형의 오류가 발생합니다.

denied: requested access to the resource is denied

여기에 이미지 설명을 입력하십시오

누구 든지이 문제에 대한 힌트를 줄 수 있습니까? 도움을 주시면 감사하겠습니다.

참고 : docker에 성공적으로 로그인했습니다


받는 사람 덕분에 대답 에서 제공 딘 우이 댓글SES는 , 밀어 전에, 당신의 고정 표시기 허브 계정에 명령 줄에서 로그인을 기억

docker login

문서 에 따르면 :

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.

따라서 이는 푸시하기 전에 이미지 태그지정 해야 함을 의미합니다 .

docker tag firstimage YOUR_DOCKERHUB_NAME/firstimage

그런 다음 푸시 할 수 있어야합니다.

docker push YOUR_DOCKERHUB_NAME/firstimage

도커 초보자 코스를 수강하는 동안 동일한 문제가 발생했습니다. docker login도커 푸시 콜 이전에 문제를 해결했습니다 .


나는 같은 문제가 있었지만 여기에 주어진 대답은 효과가 없었다. 나는 몇 가지 단계를 시도했고 마침내 그것을 밀어 내릴 수있었습니다. 이것이 누군가를 돕기를 바랍니다.

나를 위해 일한 단계는 다음과 같습니다.

1) 도커에 로그인하십시오.

docker login -u sirimalla

2) 이미지 빌드에 태그를 지정하십시오.

내 이미지 이름은 여기에 있습니다 : mylocalimage 그리고 기본적으로 태그가 있습니다 : 최신
및 내 사용자 이름은 : sirimalla docker cloud에 등록 된대로 : dockerhub 라는 공용 저장소를 만들었습니다

그래서 내 개인 저장소는 이제 sirimalla / dockerhub가 되고 태그를 사용하여 이미지를 푸시하고 싶습니다.myfirstimagepush

나는 아래와 같이 태그했다 :

docker tag mylocalimage:latest sirimalla/dockerhub:myfirstimagepush

3) 아래와 같이 이미지를 개인 도커 저장소로 푸시했습니다.

docker push sirimalla/dockerhub:myfirstimagepush

그리고 그것은 내 개인 도커 저장소로 성공적으로 밀렸습니다.


또한 이미지에 태그를 지정할 때 네임 스페이스를 사용한 다음 저장소 / mydevrepo사용하여 이미지에 태그 를 지정해야합니다 . Docker 문서를 따라갈 때 혼란 스럽습니다. 그 후 나는 사용했다 :

docker login

그런 다음 'tagged name'을 사용하여 이미지를 푸시했습니다 .

docker push {namespace}/mydevrepo

아래 명령을 사용하십시오.

$ 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

예를 들어 manjeet86 / docker-repo와 같은 공용 저장소가 있으므로 명령은 다음과 같습니다.

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

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

그냥 참조 :대신 /그 트릭이었다. 그것은 나를 위해 작동합니다. 태그 /대신 태그를 지정할 수 있는지 여부는 알 수 :없지만 다른 목적 일 수 있습니다.

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


도 커가 사용자 ID 및 리포지토리를 처리하는 방식은 약간 혼동 될 수 있습니다. docker hub에서 사용자 계정 xyz를 생성한다고 가정 해 봅시다. 새 계정은 자동으로 네임 스페이스를 설정합니다 xyz. 그런 다음 myrepo라는 저장소를 작성하십시오. 저장소 이름은 실제로입니다 xyz/myrepo.

이미지를 푸시하려면 다음을 수행하십시오.

docker push docker.io/xyz/myrepo

필요한 경우 ": latest"또는 다른 태그를 추가 할 수 있습니다.

requested access to the resource is denied오류 메시지가 표시 되면

  1. https://hub.docker.com/으로 이동하여 xyz로 로그인하십시오.
  2. 저장소 xyz / myrepo를 클릭하십시오.
  3. 공동 작업자를 클릭하십시오.
  4. xyz를 공동 작업자로 추가하십시오.

도커 허브에 무슨 일이 있었는지 확실하지 않지만 게시 된 솔루션 중 어느 것도 나를 위해 일하지 않았습니다. 다음은 2018 년 1 월 현재 나를 위해 일한 해결 방법입니다.

  1. hub.docker.com으로 이동하여 저장소를 개인용으로 변경하십시오.
  2. 셸에서 다음을 수행하십시오.

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. 도커 허브로 돌아가서 repo를 다시 공용으로 변경하십시오. 그것은 나를 위해 일했다.

운영체제 : Ubuntu16.04

이유 : 클라이언트 구성 파일 ( ~ / .docker / config.json )을 삭제했습니다.

해결책:

  • 도커를 다시 시작하십시오.
    서비스 도커 다시 시작 .
  • 로그인 정보를 입력 한 다음 구성 파일을 자동으로 생성해야합니다.
    도커 로그인 --username = yourdockerhubername --email=youremail@company.com

Docker에는 보유 할 수있는 개인 리포지토리 수에 제한이 있습니다. 로컬 컴퓨터에서 푸시하여 개인 리포지토리를 생성하는 경우 리포지토리가 생성되지만 더 이상 리포지토리로 푸시하거나 가져올 수 없으며 "리소스에 대한 요청 된 액세스가 거부되었습니다"라는 오류가 발생합니다.


내 문제는 이미지 이름에 유효하지 않은 문자 (추가 /)를 사용하는 것입니다.

myusername/something/image

잘못된 이미지 이름입니다. myusername / something-image를 사용해보십시오. 이것이 누군가를 돕기를 바랍니다.


오늘도 같은 문제가있었습니다. 나를 위해 일한 유일한 것은 "docker.io"에 명시 적으로 로그인하는 것입니다.

도커 로그인 docker.io

다른 여러 이름을 시도했지만 로그인이 작동하는 것처럼 보이지만 나중에 "자원에 대한 요청 된 액세스가 거부되었습니다"오류가 발생합니다.


이미지를 자신의 Nexus 리포지토리 관리자로 푸시하려는 경우 다음을 수행하십시오.

1) Nexus Repository Manager에 로그인 (포트 8443은 특정 Docker 호스트 리포지토리와 연결됨)

sudo docker login xxx.mydomain.com:8443

2) NEXUS SERVER IP / DNS로 이미지에 태그를 지정하십시오

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

3) 이미지를 밀어

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

앱에서 로그인하십시오. 나는 운이없는 터미널에서만 노력하고 있습니다.

이것은 버전 17.06.1입니다

여기에 이미지 설명을 입력하십시오


간단한 작업 솔루션 :

여기 https://hub.docker.com/예를 들어 이름을 가진 개인 저장소를 만들 johnsmith/private-repository이것은이다 NAME/REPOSITORY이미지를 구축 할 때 당신이 당신의 이미지에 사용됩니다.

  • 먼저, docker login

  • 둘째, " docker build -t johnsmith/private-repository:01 ."를 사용하여 이미지를 생성하고 " docker images"를 사용 하여 아래의 노란색 상자와 같이 생성 된 이미지를 확인합니다. (죄송 합니다만 표 형식을 붙여 넣을 수없고 텍스트 문자열 만 붙여 넣을 수 있습니다)

johnsmith / private-repository (REPOSITORY) 01 (TAD) c5f4a2861d6e (이미지 ID) 2 일 전 (CREATED) 305MB (SIZE)

  • 셋째, 나는 docker push johnsmith/private-repository:01

끝난!


Azure Container Registry를 사용하는 동안이 문제가 발생하면 먼저 레지스트리에 로그인하여 문제를 해결할 수 있습니다.

docker login yourregistry.azurecr.io

그런 다음 레지스트리의 호스트 이름과 일치하도록 이미지에 태그를 지정하십시오.

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

그리고 마지막으로 밀어 넣습니다.

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

나는이 문제를 가지고 있었고 여기에있는 솔루션을 테스트했지만 아무 소용이 없다면 적어도 출력에 따라 올바르게 로그인 docker login했지만 여전히 이미지를 푸시 할 수 없었습니다. 마지막으로 효과가 있었던 것은 단순히하는 것입니다.

docker logout

그리고 docker login다시, 그것은 사소한 일이었습니다. 무슨 일이 있었는지 잘 모르겠지만 다시 로그인해야했습니다.


내 대답은 다음과 같은 일반적인 파이프 라인과 관련하여 Azure DevOps와 비슷한 문제와 관련이 있습니다 (더 구체적이지만 누군가가 시간을 절약하는 데 도움이 될 수 있음).

  1. github에서 소스 가져 오기
  2. 도커 이미지 빌드
  3. 도커 이미지를 dockerhub로 푸시

푸시에서받은 오류가 denied: requested access to the resource is denied여기로 보냈습니다.

$(Build.Repository.Name)이미지 이름에 포함 된 변수에주의 하십시오. 기본적으로 github의 리포지토리 이름이지만 푸시하려면 작동해야합니다 dockerhub_account_username/your_dockerhub_repository_name.

교체 $(Build.Repository.Name)dockerhub_account_username/your_dockerhub_repository_name모두 빌드 및 푸시 단계는 이미지 이름 필드에.

dockerhub api에서 이미지를 어디로 푸시해야하는지 알아야합니다.


이후에도 여전히 실패하면 docker login푸시하려는 저장소가 처음에 작성되었는지 확인하십시오.


나는 또한이 문제를 겪고있다. 프리 티어를 사용하고 있으며 개인 저장소에서 둘 이상의 이미지를 푸시하려고합니다. 1 이미지를 비공개로 만들고 나머지는 공개적으로 만들었습니다.


제 경우에는 리포지토리에 대한 관리자 권한이있는 팀에 소속 된 조직으로 추진하고있었습니다.

그래서 내 푸시 명령은 다음과 같습니다. docker push org-name/image-name

사용자 이름 / 이미지 이름으로 푸시했지만 조직에는 푸시 할 수 없습니다. 권한을 세 번 확인했습니다. 아무것도 효과가 없었습니다.

해결책은 docker hub에서 repo를 삭제하고 다음을 사용하여 다시 새로 작성하는 것입니다. docker push org-name/image-name

그 가치에 대해서는 계정이 조직으로 전환되기 전에 리포지토리가 원래 푸시 된 것 같습니다.


이 대답은 내 미래의 자기 자신을위한 다른 사람만큼이나 중요합니다. 올바르게 로그인 할 때이 정확한 문제가 발생했지만 개인 저장소의 수가 계획에서 허용하는 한도보다 크거나 같은 경우 개인 저장소로 푸시하려고합니다.

어떻게 개인 저장소를 너무 많이 만들 수 있었는지 잘 모르겠지만 계획에 5 개의 개인 저장소가 포함되어 있고 어떻게 든 6 개가있는 경우 다음과 같은 오류가 발생합니다.

denied: requested access to the resource is denied

필자의 경우 기본 가시성이 개인으로 설정되어 있기 때문에 개인 저장소가 너무 많을 수 있습니다.

기본 가시성

여기에서 보유 할 수있는 개인 저장소의 수를 결정합니다.

청구 계획

문제가있는 리포지토리를 공개 한 후에는 문제가 분명해졌습니다.

리포지토리를 비공개로 설정 5/5


이미지 이름을 username / image-name docker tag로 변경하십시오. 현재 이미지 / 현재 이미지 dockerhub-username / some-name : your-tag (예 : latest)


"Docker for Windows"애플리케이션에서 로그 아웃하고 https://hub.docker.com/ 사이트에서 사인 아웃 한 후 "docker login"및 "docker push"를 수행하십시오. 그것은 나를 도왔습니다.


명령 프롬프트에서 도커 로그인이 작동하지 않았습니다. 푸시하려고 할 때 "자원에 대한 요청 된 액세스가 거부되었습니다"라는 메시지가 계속 나타납니다.

Windows 앱 자체의 도커에 로그인 한 후 도커 푸시는 정상적으로 작동했습니다. 이것이 누군가를 돕기를 바랍니다.


도커 로그인 후 접두사로 이미지 이름을 지정해야합니다.

예를 들어 docker-hub의 사용자 이름이 Shah인 경우 이미지는 다음과 같아야합니다.

Shah/firstimage

다른 사람 이이 문제에 직면 한 경우-제 경우에는 (더 이상 사용되지 않는) docker compose접근 방식을 사용하여 이미지를 푸시 했기 때문 입니다. 예상대로 전환 docker push하면 문제가 해결되었습니다.


이것에 대한 또 다른 (꽤 똑똑한) 이유 : 당신은 당신의 계획에 대한 개인적인 저장소가 없습니다.


제 경우에는 sudo -E가이 메시지로 실패했습니다. 해결 방법은 sudo없이 액세스 도커를 제공하는 것입니다 (그룹 도커 생성, 그룹에 (Jenkins) 사용자 추가, 그룹을 /var/run/docker.sock에 설정). 이제 docker pushsudo가 필요하지 않으며 작동합니다.


그래서 누군가에게 도움이 될 경우를 대비해서 ...
같은 문제가 있었고 여기 내 문제와 FIX가 있습니다.

  • 테스트 네트워크에 '갤럭시'라는 컴퓨터가 있습니다.
  • 다음 실행 명령을 사용하여 docker registry를 설정했습니다.

    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
    

    그런 다음 네트워크의 랩톱에서 이미지를 갤럭시로 푸시하려고 했으므로 다음과 같이하십시오.

    docker login galaxy
    

    이렇게하면 다음과 같은 오류가 발생합니다.

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

    이상하게 도이 문제에 대한 수정은 다음과 같이 로그인하는 것입니다.

    docker login galaxy:443
    

    로그인이 성공했습니다.

    그런 다음 랩톱의 이미지를 '은하계'로 푸시하려고했습니다.
    이미 다음과 같은 이미지 태그를 만들었습니다.

    galaxy/myImage:0.0.1
    

    그래서 나는 이것을하기 위해 노력했다.

    docker push galaxy/myImage:0.0.1
    

    답장을 받았습니다 :

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

    이상하게 도이 문제에 대한 수정 사항을 처음 발견하면 다음과 같이 이미지에 태그를 지정했습니다.

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

    ... 그리고 다음과 같이 밀어 넣으십시오.

    docker push galaxy:443/myImage:0.0.1
    

    따라서 어떤 이유로 든 저장소 이름의 필수 부분으로 태그에 포트를 포함시켜야했습니다.



    이것이 다른 사람들을 돕기를 바랍니다.


  • 이전의 모든 대답은 정확했습니다. 언급하지 않은 정보를 추가하고 싶습니다.

    프로젝트가 개인 프로젝트 인 경우 이미지를 올바르게 푸시하려면 read_registry 키가 활성화 된 개인 액세스 토큰 또는 배포 토큰을 구성해야합니다.

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

    도움이되기를 바랍니다 (질문이 지금까지 게시 된 경우)

    참고 URL : https://stackoverflow.com/questions/41984399/denied-requested-access-to-the-resource-is-denied-docker

    반응형