Docker 권한 없음 : 인증 필요-성공적인 로그인으로 푸시시


99

내 호스트에서 도커 이미지를 푸시하는 동안 (성공적인 로그인 후) "승인되지 않음 : 인증 필요"가 표시됩니다.

아래 세부 정보.

-bash-4.2# docker login --username=asamba --email=anand.sambamoorthy@gmail.com
WARNING: login credentials saved in /root/.docker/config.json
*Login Succeeded*
-bash-4.2#
-bash-4.2# docker push asamba/docker-whale

Do you really want to push to public registry? [y/n]: y
The push refers to a repository [docker.io/asamba/docker-whale] (len: 0)
faa2fa357a0e: Preparing
unauthorized: authentication required
  • Docker 버전 : 1.9.1 (클라이언트 및 서버 모두)
  • http://hub.docker.com 에는 repo도 생성되어 있습니다 (asamba / docker-whale).

/ var / log / messages에 403이 표시됩니다.이 도커인지 모르겠습니다. 아래를 참조하십시오.

Apr 16 11:39:03 localhost journal: time="2016-04-16T11:39:03.884872524Z" level=info msg="{Action=push, Username=asamba, LoginUID=1001, PID=2125}"
Apr 16 11:39:03 localhost journal: time="2016-04-16T11:39:03.884988574Z" level=error msg="Handler for POST /v1.21/images/asamba/docker-whale/push returned error: Error: Status 403 trying to push repository asamba/docker-whale to official registry: needs to be forced"
Apr 16 11:39:03 localhost journal: time="2016-04-16T11:39:03.885013241Z" level=error msg="HTTP Error" err="Error: Status 403 trying to push repository asamba/docker-whale to official registry: needs to be forced" statusCode=403
Apr 16 11:39:05 localhost journal: time="2016-04-16T11:39:05.420188969Z" level=info msg="{Action=push, Username=asamba, LoginUID=1001, PID=2125}"
Apr 16 11:39:06 localhost kernel: XFS (dm-4): Mounting V4 Filesystem
Apr 16 11:39:06 localhost kernel: XFS (dm-4): Ending clean mount
Apr 16 11:39:07 localhost kernel: XFS (dm-4): Unmounting Filesystem

도움을 주시면 감사하겠습니다. 추가 정보가 필요하면 알려주세요. 나는 -f로도 푸시했다. 불운!


1
귀하의 답변 옆에있는 확인 표시를 클릭하여 "the"답변으로 표시하면 사이트 관리자와 같은 문제에 대한 정보를 찾는 다른 사람들에게 도움이 될 것입니다. 스택 오버플로.
신디 마이스터

답변:


87

편집 (13/08/2017)

@KaraPirinc의 의견에 따라 도커 버전 17에서 로그인하려면 (1 단계),

docker login -u username -p password

나도 같은 문제가 있었는데 이것이 내가 해결하는 방법입니다.

1 단계 : Docker 허브에 로그인

docker login --username=<user username> --email=<user email address>

2 단계 : Docker 허브에 리포지토리를 만듭니다 . " mysqlserver : sql " 이라고합시다 .

docker push <user username>/mysqlserver:sql

7
이것은 정답이어야합니다 . docker login매개 변수 없이도 작동합니다
blnc

5
완벽하게 작동합니다. 그러나 --email은 더 이상 사용되지 않습니다 .
IgorGanapolsky

(고정 표시기 버전 17) : 고정 표시기 로그인 -u 사용자 이름 -p 암호
유수프 이스마일 Oktay

업데이트 주셔서 감사합니다. 귀하의 의견에 따라 답변을 업데이트하겠습니다.
GPrathap

34

게시 한 솔루션이 작동하지 않습니다 ...

이것이 나를 위해 작동하는 것입니다.

  1. 원하는 이름으로 저장소를 만듭니다.

  2. 이미지를 커밋 할 때 사용자 이름을 포함하여 저장소와 같은 이미지 이름을 지정합니다 <dockerusername>/desired-name. 예 : radu/desired-name.


# 고정 표시기 PS -a의 get -m "테스트"-a "알렉스"커밋 고정 표시기 --nostalgic_morse 여기 conainer의 이름 # nostalgic_morse alexcpn / grpc # 고정 표시기 푸시 alexcpn / grpc
알렉스 Punnen

28

확인! 신경 쓰지 마; 해결책을 찾았습니다. 403 HTTP가 올바른 URL로 이동하지 않는 것으로 의심됩니다.

~/.docker/config.json생성 된 기본값에서 저장된 로그인 자격 증명이있는 파일을 변경합니다.

{
        "auths": {
                "docker.io": {
                        "auth": "XXXXXXXXXXXXX",
                        "email": "x.y@gmail.com"
                }
        }
}

to-docker.io-> index.docker.io/v1의 변경 사항을 확인합니다. 그것이 변화입니다.

{
        "auths": {
                "https://index.docker.io/v1/": {
                        "auth": "XXXXXXXXXXXXX",
                        "email": "x.y@gmail.com"
                }
        }
}

도움이 되었기를 바랍니다.

인증 필드는 'username : password'base64로 인코딩되어야합니다. 예 : "username : password"base64로 인코딩 됨은 "dXNlcm5hbWU6cGFzc3dvcmQ ="입니다.

따라서 파일에는 다음이 포함됩니다.

"auth": "dXNlcm5hbWU6cGFzc3dvcmQ="

당신은 저를 꽤 오래 구했습니다! 저에게도 완벽한 솔루션입니다.
마르코 Lenzo

7
나를 위해 일했습니다. 다음은 명령 줄에서도 동일합니다.sudo docker login -e me@example.com -u someuser -p somepass https://index.docker.io/v1/
Banjer

2
@Banjer에게 감사합니다. -e 매개 변수는 더 이상 사용되지 않으며 시스템을 올바르게 설정 한 대부분의 사람들에게 sudo를 사용할 필요가 없습니다. 더 나은 해결책은 다음과 같습니다. docker login -u someuser https://index.docker.io/v1/이것은 암호를 요청하여 명령 기록에 포함되지 않도록합니다.
erb

17

heroku를 사용하는 경우 푸시하기 전에 "heroku container : login"을 잊지 않았는지 확인하십시오.


7

비슷하게 도움이되지 않는 오류 메시지와 함께 비슷한 문제가 발생했지만 Docker-machine 관리 인스턴스에 대해 빌드 한 이미지를 푸시하려고했기 때문에 발생했습니다.

내가 인스턴스 자체에 로그인 할 때, 한 docker logindocker push모든 벌금을했다.


감사합니다. 도커 로그인은 링크에
Felix

7

나는 같은 문제가 있었지만 지정된 URL로 푸시로 수정했습니다. as : 도커 로그인 -u https://index.docker.io/v1/

콘솔 출력 :

The push refers to a repository [docker.io/<username>/richcity]
adc9144127c1: Preparing 
4db5654f7a64: Preparing 
ce71ae73bc60: Preparing 
e8e980243ee4: Preparing 
d773e991f7d2: Preparing 
bae23f4bbe95: Waiting 
5f70bf18a086: Waiting 
3d3e4e34386e: Waiting 
e72d5d9d5d30: Waiting 
8d1d75696199: Waiting 
bdf5b19f60a4: Waiting 
c8bd8922fbb7: Waiting 
unauthorized: authentication required

1010deiMac:dockerspace whoami$ docker login -u <username> https://index.docker.io/v1/
Password: 
Login Succeeded
1010deiMac:dockerspace whoami$ docker push <username>/richcity 
The push refers to a repository [docker.io/<username>/richcity]
adc9144127c1: Pushed 
4db5654f7a64: Pushed 
ce71ae73bc60: Pushed 
e8e980243ee4: Pushed 
d773e991f7d2: Pushed 
bae23f4bbe95: Pushed 
5f70bf18a086: Pushed 
3d3e4e34386e: Pushing [=============>                                     ] 45.07 MB/165.4 MB
e72d5d9d5d30: Pushed 
8d1d75696199: Pushing [>                                                  ] 1.641 MB/118.1 MB
bdf5b19f60a4: Pushing [============>                                      ]   142 MB/568.4 MB
c8bd8922fbb7: Pushing [========================>                          ] 59.44 MB/121.8 MB

5

표준 프로세스는 로그인 한 다음 도커 레지스트리로 푸시하는 것이지만,이 특정 문제를 해결하기위한 트릭은 동일한 줄에 사용자 이름과 암호를 제공하여 로그인하는 것입니다.

그래서 :

docker login -u xxx -p yyy sampledockerregistry.com/myapp 
docker push sampledockerregistry.com/myapp

공장

이므로

docker login sampledockerregistry.com 
username : xxx
password : yyy
Login Succeeded

docker push sampledockerregistry.com/myapp

실패


4

로그인하여 모든 구성을 확인했지만 여전히 작동하지 않습니다 !!!

도커를 만들 때 리포지토리 이름 앞에 사용자 이름을 입력하는 것을 잊었습니다.

docker build docker-meteor-build 

(성공적으로 빌드)

그런 다음 저장소로 푸시 할 때

docker push myname/docker-meteor-build 

그것은 보여줄 것입니다 unauthorized authentication required

따라서 솔루션은 빌드 이름이고 푸시는 정확히 동일해야합니다.

docker build myname/docker-meteor-build 
docker push myname/docker-meteor-build 

4

초보자가 직면하는 문제는 우리가 도커 허브 저장소를 메이븐 저장소처럼 취급하는 경향이 있고 다른 많은 파일, 폴더 및 기타 콘텐츠를 포함 할 수 있다고 생각한다는 것입니다.

반면에 도커 저장소는 하나의 이미지 일 뿐이며 다른 것은 포함하지 않습니다. 동일한 이미지의 다른 버전을 보유 할 수 있지만 이미지는 하나만 포함됩니다.

따라서 Docker 허브의 저장소 이름을 푸시하려는 이미지와 동일한 이름으로 지정하고 dockerhub 사용자 이름을 접두사로 사용하십시오. 예를 들어 사용자 이름이 myusername 이고 이미지 이름이 docker-whale 인 경우 dockerhub 저장소 이름을 docker-whale 로 지정하고 아래 명령을 사용하여 이미지에 태그를 지정하고 저장소에 푸시합니다.

docker logout                                   # to make sure you're logged out and not cause any clashes
docker tag <imageId> myusername/docker-whale    # use :1.0.0 for specific version, default is 'latest'
docker login --username=myusername              # use the username/pwd to login to docker hub
docker push myusername/docker-whale             # use :1.0.0 for pushing specific version, default is 'latest'

1
이 게시물을 볼 때까지 "거부 됨 : 리소스에 대한 요청 된 액세스가 거부되었습니다"라는 메시지가 계속 나타납니다. 마지막으로, 튜토리얼에 손을 댈 필요없이 처음으로 "도커-푸시"작업을 수행 할 수있었습니다. 무리 감사!
glendon

2

새 비공개 이미지를 처음으로 푸시하는 경우 구독이이 추가 이미지를 지원하는지 확인하세요.

Docker를 사용하면 5 개의 비용 만 지불하더라도 6 개의 비공개 이미지 이름을 가질 수 있지만 6 번째 이미지는 푸시 할 수 없습니다. 유익한 메시지가 없다는 것은 혼란스럽고 짜증이납니다.


2

여기 내 경우에 대한 해결책 (개인 저장소, 무료 계정 계획)

https://success.docker.com/Datacenter/Solve/Getting_%22unauthorized%3A_authentication_required%22_when_trying_to_push_image_to_DTR

푸시 할 이미지 빌드 이름은 저장소와 동일한 이름을 가져야합니다.

예 : docker 허브의 repos : accountName / resposName 이미지 빌드 이름 "accountName / resposName"-> docker build -t accountName / resposName

그런 다음 docker push accountName / resposName : latest를 입력하십시오.

그게 다야.


이제 링크가 끊어졌습니다. 고쳐주세요.
Eric Bolinger

1

나를 위해 일한 것은 새 저장소를 만들고 이미지 이름을

$ docker tag image_id myname/server:latest


1

비공개 이미지 용 슬롯이 더 있는지 확인하세요.

제 경우에는 사용자를 조직으로 전환했는데 하나의 무료 개인 이미지가 손실되었으므로 이전에 작동했던 푸시가 더 이상 작동하지 않았습니다.


1

내 문제는 5 분 후 잘못된 인증 토큰이었습니다. 이미지 크기 때문에 푸시에 5 분 이상 걸렸습니다.

"인증 토큰 기간"을 10 분으로 늘려 문제를 해결했습니다.

여기에 이미지 설명 입력


이 설정을 어디에서 찾았습니까? 나는 그것을 찾을 수 없었다.
Vic Seedoubleyew

2
이 문제를 방지하기 위해 내 해킹을 실행하는 것이었다 docker login업로드가 완료 직전에 다른 터미널 창에서
빅 Seedoubleyew

@VicSeedoubleyew Admin Area -> Settings -> CI/CD -> Container Registry. URL 경로 : /admin/application_settings/ci_cd.
Manuel Schmitzberger

답변 해주셔서 감사합니다. 무엇의 관리 영역? 도커 허브에서 그 어떤 것도 볼 수 없습니다
Vic Seedoubleyew 2011

그것은 자체 gitlab 인스턴스를위한 것입니다. dockerhub에서 구성 할 수 있는지 잘 모르겠습니다.
Manuel Schmitzberger

0

Docker 저장소 이름이 로컬 Docker 저장소 이름과 일치하는지 확인하십시오. 예를 들어 로컬 리포지토리 이름 "kavashgar / nodjsapp"이라고 말할 수 있습니다.

그러면 도커 허브에 "kavashgar"라는 저장소 이름이 있어야합니다.


0

구성 파일 ~ / .docker / config.json 추가

{
        "auths": {
             "https://index.docker.io/v1/": {
                        "auth": "XXXXXXXXXXXXX",
                        "email": "my_email@gmail.com"
                }
        }
}

여기서 XXXXX는 https://hub.docker.com 의 사용자 이름 : 암호 (: 포함)의 base64 인코딩입니다 .

제 경우에는 당겨서 같은 오류가 발생했습니다. 문제 (창 아래)는 이중 도커 실행 프로세스에 의해 유발되었으므로 모두 죽이고 하나의 서비스를 다시 시작하면 작동합니다.


0

이미 좋은 답변이 있지만 하나를 언급하고 싶습니다 . 푸시하기 전에 미리 저장소를 만들 필요가 없습니다.

나에게 문제는 내가 로그인 한 계정의 올바른 사용자 이름을 설정하지 않았다는 것입니다. 그러나 YOURNAME/YOURIMAGE태그를 통해 이미지 (예 :) 앞에 올바른 사용자 이름이 설정되면 미리 새 저장소를 만들지 않고도 푸시 할 수 있습니다.

sudo docker tag IMAGE:VERSION USERNAME/IMAGE:VERSION
sudo docker push USERNAME/IMAGE:VERSION

0

이미지를 푸시하는 동안 여기에 동일한 문제가 있습니다.

unauthorized: authentication required

제가 한:

docker login --username=yourhubusername --email=youremail@company.com

인쇄 :

--email은 더 이상 사용되지 않습니다 (그러나 여전히 로그인 성공)

해결책 : 최신 로그인 구문을 사용하십시오.

docker login

사용자 이름암호를 대화식으로 묻습니다 . 그러면 이미지 푸시가 작동합니다.

새 구문을 사용한 ~/.docker/config.json후에도 로그인하면 다음과 같이 보입니다.

{
    "auths": {
        "https://index.docker.io/v1/": {}
    },
    "credsStore": "osxkeychain"
}

따라서 자격 증명은 macOS의 키 체인에 있습니다.


0

sudo docker push / sudo docker pull on ecr repository. aws cli가 내 사용자 (abc)에 설치되고 docker가 root 사용자에 설치 되었기 때문에 비슷한 오류가 발생했습니다.

루트에 aws cli를 설치하고 루트에 aws configure를 사용하여 aws를 구성하고 루트 사용자에서 sudo docker push to ecr을 실행하여이 문제를 해결했습니다.



0

xxx / .docker / config.json 파일을 어딘가에서 처리 할 수 ​​있습니다. 그런 다음 새 config.json 파일을 만들기 위해 다시 로그인하십시오.

#mv xx/.docker/config.json xx/.docker/config_old.json
#docker login https://index.docker.io/v1/
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: YOUR USERNAME
Password: YOUR PASSWORD
WARNING! Your password will be stored unencrypted in /xxx/.docker/config.json.
Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

0

달리는 경우 windows 7 docker Registry

  1. **Docker Quick Start terminal**실행 시작 (이 터미널은 연결을 가능하게 함) 이미지를 푸시 할 때까지 토큰을 활성 상태로 유지합니다.
  2. 로그인 docker login
  3. 사용자 이름으로 이미지에 태그를 지정하세요.

    docker build -f Dockerfile -t 'username'/imagename

  4. 푸시 이미지

    docker image push username/imagename

참고 : 이미지 이름은 모두 소문자


0

비슷한 문제가있었습니다.

Error response from daemon: Get https://registry-1.docker.io/v2/hadolint/hadolint/manifests/latest: unauthorized: incorrect username or password

docker login명령 으로 성공적으로 로그인하더라도 풀이 실패 한다는 것을 알았습니다 . 나는 청소를 시도 ~/.docker/config.json했지만 개선되지 않았습니다.

구성 파일을 살펴보면 자격 증명이 거기에 저장되지 않고 "credsStore": "secretservice". Linux에서 이것은 seahorse또는 Passwords and Keys도구입니다. 거기를 확인하고 모든 도커 허브 로그인을 정리했습니다. 이 후 새로운 도커 로그인이 예상대로 작동했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.