docker unauthorized:需要身份验证 - 成功登录后推送

Ana*_*and 92 docker

从我的主机推送docker镜像(成功登录后)时,我收到"未经授权:需要身份验证".

详情如下.

-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
Run Code Online (Sandbox Code Playgroud)
  • Docker版本:1.9.1(客户端和服务器)
  • http://hub.docker.com也创建了回购(asamba/docker-whale).

/ var/log/messages显示403,我不知道这个docker是不是.见下文.

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
Run Code Online (Sandbox Code Playgroud)

如有任何帮助,请告知我们您是否需要进一步的信息.我也用-f做了推送.没运气!

GPr*_*hap 82

我也有同样的问题.这就是我如何解决它.

第1步:登录docker hub

docker login --username=<user username> --email=<user email address>
Run Code Online (Sandbox Code Playgroud)

步骤2:在docker hub中创建一个存储库.让我们说" mysqlserver:sql ".

docker push <user username>/mysqlserver:sql
Run Code Online (Sandbox Code Playgroud)

编辑(13/08/2017)

基于@KaraPirinc的评论,在docker版本17中登录(步骤1),

docker login -u username -p password
Run Code Online (Sandbox Code Playgroud)

  • **这应该是正确答案**.`docker login`也可以在没有params的情况下工作 (6认同)
  • 完美的工作.但是,** - 电子邮件已被弃用**. (5认同)

Rad*_*iel 33

你发布的解决方案对我不起作用......

这对我有用:

  1. 使用所需名称创建存储库.

  2. 提交图像时,将图像命名为存储库,包括用户名<dockerusername>/desired-name.例如,radu/desired-name.


Ana*_*and 27

好!没关系; 我找到了解决方案.with 403怀疑HTTP没有到达正确的URL.

~/.docker/config.json从生成的默认值更改存储了登录凭据的文件

{
        "auths": {
                "docker.io": {
                        "auth": "XXXXXXXXXXXXX",
                        "email": "x.y@gmail.com"
                }
        }
}
Run Code Online (Sandbox Code Playgroud)

to - 请注意docker.io - > index.docker.io/v1的更改.这就是改变.

{
        "auths": {
                "https://index.docker.io/v1/": {
                        "auth": "XXXXXXXXXXXXX",
                        "email": "x.y@gmail.com"
                }
        }
}
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.

请注意,auth字段应为'username:password"base64 encoded.例如:"username:password"base64 encoded为"dXNlcm5hbWU6cGFzc3dvcmQ ="

所以你的文件将包含:

"auth": "dXNlcm5hbWU6cGFzc3dvcmQ="
Run Code Online (Sandbox Code Playgroud)

  • 也为我工作过.命令行中也是如此:`sudo docker login -e me@example.com -u someuser -p somepass https:// index.docker.io/v1 /` (6认同)
  • 感谢@Banjer,-e param虽然已被弃用,并且sudo不应该被用于大多数正确设置系统的人.一个更好的解决方案是:`docker login -u someuser https:// index.docker.io/v1 /`这将要求输入密码,防止它在命令历史记录中结束. (2认同)

Nee*_* B. 11

新手面临的问题是,我们倾向于将 docker hub 存储库视为 maven 存储库,并认为它可能包含许多不同的文件、文件夹和其他内容。

另一方面,docker 存储库只是一个图像,它不包含任何其他内容。它可以保存同一图像的不同版本,但它只会包含一个图像。

因此,将您在 docker hub 上的存储库命名为与要推送到其中的图像相同的名称,并使用您的 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'
Run Code Online (Sandbox Code Playgroud)

  • 我一直收到“被拒绝:请求访问资源被拒绝”的消息,直到我看到这篇文章。最后,成功地让我的第一个“docker-push”在没有教程的情况下工作。非常感谢! (3认同)

Rya*_*old 8

如果它对任何人有帮助,我设法在提示符下使用以下命令解决此问题:

az acr login -n MyContainerName
Run Code Online (Sandbox Code Playgroud)

之后我就可以docker push成功运行了。


ato*_*c77 7

我遇到了一个类似的问题,同样没有帮助的错误信息,但事实证明是因为我试图推送我针对docker-machine托管实例构建的图像.

当我登录到实例本身时,确实docker login并且docker push一切正常.


Gab*_* Wu 7

我遇到了同样的问题,但我用push指定了url.as:docker login -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
Run Code Online (Sandbox Code Playgroud)


Suk*_*thi 5

虽然标准流程是登录然后推送到docker注册表,但解决这个特定问题的技巧是通过在同一行提供用户名和密码来登录.

所以:

docker login -u xxx -p yyy sampledockerregistry.com/myapp 
docker push sampledockerregistry.com/myapp
Run Code Online (Sandbox Code Playgroud)

作品

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

docker push sampledockerregistry.com/myapp
Run Code Online (Sandbox Code Playgroud)

失败


小智 5

如果您使用的是heroku,请确保在推送之前不要忘记“ heroku container:login”。