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

时间:2016-04-16 11:45:55

标签: docker

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

详情如下。

<td>
  <span editable-bsdate="comment.date" e-datepicker-popup="MM-dd-yyyy" e-ng-click="vm.open($event,'$data')" e-is-open="vm.opened.$data" e-name="date" e-form="commentForm">
     {{ comment.date | date:'MM-dd-yyyy' }}
   </span>
 </td>
  • Docker版本:1.9.1(客户端和服务器)
  • http://hub.docker.com也创建了回购(asamba / docker-whale)。

/ var / log / messages显示403,我不知道这个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

如有任何帮助,请与我们联系,如果您需要更多信息,请与我们联系。我也用-f做了推送。没有运气!

26 个答案:

答案 0 :(得分:77)

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

步骤1:登录docker hub

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

第2步:在docker hub中创建一个存储库。让我们说“ mysqlserver:sql ”。

docker push <user username>/mysqlserver:sql

修改(13/08/2017)

根据@ KaraPirinc的评论,在docker 17版中登录(步骤1),

docker login -u username -p password

答案 1 :(得分:33)

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

这对我有用:

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

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

答案 2 :(得分:27)

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

从默认生成的

更改具有存储~/.docker/config.json的登录凭据的文件
{
        "auths": {
                "docker.io": {
                        "auth": "XXXXXXXXXXXXX",
                        "email": "x.y@gmail.com"
                }
        }
}

to - 注意来自docker.io的更改 - &gt; index.docker.io/v1。这就是改变。

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

希望有所帮助。

请注意,auth字段应为&#39; username:password&#34; base64编码。 例如:&#34;用户名:密码&#34; base64编码是&#34; dXNlcm5hbWU6cGFzc3dvcmQ =&#34;

所以你的文件将包含:

"auth": "dXNlcm5hbWU6cGFzc3dvcmQ="

答案 3 :(得分:7)

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

当我登录实例本身时,docker logindocker push一切正常。

答案 4 :(得分:5)

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

所以:

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

<强>失败

答案 5 :(得分:5)

我遇到了同样的问题,但我用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

答案 6 :(得分:4)

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

答案 7 :(得分:4)

即使我登录并检查了所有配置,它仍然无效!!!

事实证明,当我构建我的docker时,我忘记将我的用户名放在repo名称之前

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 

答案 8 :(得分:2)

如果您是第一次推送新的私有图片,请确保您的订阅支持此额外图片。

Docker允许您拥有6个私有图像,即使您只需支付5,但不能推送第6个图像。缺乏信息性的信息令人困惑和恼火。

答案 9 :(得分:2)

新手面临的问题是,我们倾向于将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'

答案 10 :(得分:1)

这是我案例的解决方案(私人回购,免费帐户计划)

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

要推送的图像构建名称必须与回购的名称相同。

实施例: docker hub上的repos是:accountName / resposName 图像构建名称&#34; accountName / resposName&#34; - &GT; docker build -t accountName / resposName

然后输入 docker push accountName / resposName:latest

这就是全部。

答案 11 :(得分:1)

确保您拥有更多用于私有图片的广告位。

在我的情况下,我将一个用户转换为一个组织,它丢失了一个免费的私有图像,所以之前的推送工作,不再有效。

答案 12 :(得分:1)

对我有用的是创建一个新的存储库并使用

重命名该图像

$ docker tag image_id myname/server:latest

答案 13 :(得分:1)

我有类似的问题。

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中,这恰好是seahorsePasswords and Keys工具。 我在那里检查并清理了所有Docker Hub登录名。 此后,新的docker登录按预期方式工作。

答案 14 :(得分:0)

我遇到了同样的问题,我可以解决它。 更改 ~/.docker/config.json 文件如下

{
    "auths": {
        "XxX": {
            "auth": "XxX"
        }
    }
}

不要忘记重启docker服务。

service docker restart 

享受

答案 15 :(得分:0)

我尝试了所有可以在网上找到的方法,但均失败了。然后,我阅读了这篇文章,并从@Alex Answer获得了一些想法。然后,我搜索config.json中使用的“ credsStore”:“ osxkeychain”。我点击此链接https://docs.docker.com/engine/reference/commandline/login/注销,然后再次登录。最后,我可以成功推送图片。

答案 16 :(得分:0)

您可以在某处mv 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

答案 17 :(得分:0)

我知道这是一个旧线程,但是对于那些使用windows 7 docker toolbox并试图推送或注册到docker hub的用户,我通过运行**Docker Quick Start terminal**解决了这个问题(此终端启用连接),直到您推送图像,令牌才能保持活动状态。

答案 18 :(得分:0)

为了帮助任何人,我设法在提示符下使用以下命令解决了这个问题:

az acr login -n MyContainerName

此后,我可以成功运行 docker push

答案 19 :(得分:0)

首先尝试SELECT t1.id FROM tbltools t1 JOIN tbltools t2 ON t2.parent_id = t1.id AND t1.startdate BETWEEN t2.startdate AND t2.enddate AND t1.enddate BETWEEN t2.startdate AND t2.enddate JOIN tblbooking b ON t2.parent_id = b.id WHERE b.status NOT IN ('Booked','Withdrawn') ,然后使用docker logout重新登录

答案 20 :(得分:0)

我的问题是5分钟后无效的授权令牌。 由于图片大小,推送花费了超过5分钟的时间。

我已通过将“授权令牌持续时间”增加到10分钟来解决此问题。

enter image description here

答案 21 :(得分:0)

我收到类似的错误,sudo docker push / sudo docker pull on ecr repository。这是因为我的用户(abc)安装了aws cli和root用户安装的docker。我试图在我的用户上运行sudo docker push (ABC)

通过在root中安装aws cli修复此问题,在root中使用aws configure配置aws并在root用户上运行sudo docker push to ecr

答案 22 :(得分:0)

在推送图像期间,此处存在同样的问题:

unauthorized: authentication required

我做了什么:

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

它打印出来了:

  

- 不推荐使用电子邮件(但仍然成功登录)

解决方案:使用最新的登录语法。

docker login

它将以交互方式请求 用户名 密码 。然后图像推送才起作用。

即使使用了新语法,登录后我的~/.docker/config.json也会如此:

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

所以凭证是在macOS&#39;钥匙串。

答案 23 :(得分:0)

已经有了很好的答案,但我想提一个 - 在推送之前你不需要提前创建一个存储库。

我遇到的问题是我没有设置我登录帐户的正确用户名。但是,一旦通过其标记在图像之前设置了正确的用户名(例如YOURNAME/YOURIMAGE),您就可以在不事先创建新存储库的情况下推送它。

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

答案 24 :(得分:0)

配置文件中的

〜/ .docker / config.json add

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

其中XXXXX是用户名:密码(包含在内)https://hub.docker.com

的base64编码

在我的情况下,我有同样的错误拉。问题(在windows下)是由双docker运行进程引起的,所以杀掉它们并重新启动一个服务就可以了。

答案 25 :(得分:0)

确保您的docker存储库名称与本地docker repo名称匹配。 例如,如果你当地的回购品名称&#34; kavashgar / nodjsapp&#34;

那么你也应该有一个回购品牌&#34; kavashgar&#34;在码头工人中心