2014-12-12 4 views
5

이미지를 전송할 Docker 허브 계정을 변경해야합니다. 내 .dockercfg 파일이 다음 (내 실제 값과 같은 일반적인 자리 역할을 account, imagetag) 다음을 실행 업데이트 할 docker login을 사용 :docker 이미지를 새 docker 허브 계정으로 푸시하지 못함

docker push account/image:tag

나는 즉시 다음과 같은 오류 얻을 :

The push refers to a repository [account/image] (len: 1) 
Sending image list 
2014/12/11 21:26:59 Error: Status 400 trying to push repository repo/image: 
"Access denied: <hash> is a private image" docker push account/image:tag 
returned exit code 1action docker push repo/image:tag failed 

docker 허브에서 개인 저장소로 푸시하려고 시도하지만 내 인증이 일치하는지 두 번 확인했습니다. 왜 이것이 실패하고 어떻게 수정합니까?

답변

0

아직도 이런 일이 일어난 이유를 아직 완전히 이해하지 못하고 있지만 해결 방법을 알아 냈습니다. 내 로컬 컴퓨터의 모든 이미지와 컨테이너를 파괴하고 이미지를 재구성했습니다. 내가 한 후에 나는 새로운 계좌로 밀 수 있었다.

제가 생각하기에 원래 만든 Docker 이미지는 이전 빌드에 있던 레이어와 이전 계정을 사용할 수 있었기 때문입니다. 새 계정으로 전환 한 후에는 Docker 허브에 더 이상 존재하지 않는 레이어에 의존하는 이미지를 푸시하려고 했으므로 해당 레이어가 발견되지 않아 Docker 허브가 내가 액세스하려는 항목을 비공개로 설정해야한다고 생각하게되었습니다 , 실제로 존재하지 않았을 때.

위의 모든 내용은 거의 순수한 추측이므로이 분야에 대한 지식과 경험이 풍부한 사람이 계몽 될 수있어서 매우 기쁩니다.

0

같은 문제가 발생하여 개인 부모 이미지로 밝혀졌습니다. here으로 설명했듯이 이미지는 기본 이미지와 대부분의 경우 상위 이미지 위에 빌드됩니다. 최신 변경 사항을 docker 허브에 푸시하려고하면 계정에 모든 상위 이미지에 대한 액세스 권한이 있어야합니다. 그렇지 않으면이 오류가 발생합니다. 내 경우에는 내가 밀어 넣으려고했던 사용자가베이스로 사용한 이미지에 액세스 할 수 없었습니다.

해시로 개인용 이미지를 쉽게 식별 할 수 있습니다.

docker images -a | grep <hash> 

개인 저장소에 액세스 할 수있는 경우 푸시하는 사용자를 공동 작업자 목록에 추가하여 수정할 수 있습니다. 그러나 사용자가 개인 리포지토리에 태그를 지정하고 나머지 변경 사항을 수동으로 적용해야합니다.

호프가 도움이 되길 바랍니다.)

0

방금 ​​같은 문제가 발생했습니다. 필자의 경우 Dockerfile에서 "FROM 우분투 : 최신"명령을 사용했습니다. 이 경우, 나는 이전 계정을 사용하여 이미지를 만들었고, 우분투를 다운로드했다 : 최신 이미지를 만들었지 만,이 다운로드는 이전 계정을 사용하여 완료되었으므로 우분투를 제거했다. 사용 된 기본 이미지)를 내 컴퓨터에서 찾아 내 이미지를 다시 작성했습니다. 그 후, 나는 내 이미지를 밀어 낼 수 있었다.

0

나는이 문제도 다루었으며, Bruno의 의견은이 문제를 해결하는 것처럼 보였다. 다음은 이미지를 제거하기위한 빠른 bash 주석입니다 (DockerFiles 및 자동화를 다시 작성해야한다고 가정 함). docker 이미지 | awk '{print $ 3}'| xargs docker rmi -f

0

우분투에서 제작 한 최신 Docker를 사용하고있었습니다. 이런 일이 발생했을 때 믿을만합니다. 모든 이미지를 삭제해도 도움이되지 않았습니다.상위 이미지 태그를 신뢰할 수있는 것으로부터 이전 trusty-20150630으로 변경했습니다.

관련 문제