docker未经授权:需要身份validation – 成功login后推送

从我的主机推入泊坞窗图像(成功login后),我得到“未经授权:authentication要求”。

下面的细节。

-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也创build了回购(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.21http://img.dovov.comasamba/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:login到Docker集线器

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

第二步:在docker集线器中创build一个仓库。 让我们说“ mysqlserver:sql ”。

 docker push <user username>/mysqlserver:sql 

编辑(13/08/2017)

基于@ KaraPirinc的评论,在docker版本17中,为了login(步骤1),

 docker login -u username -p password 

您发布的解决scheme不适合我…

这对我有用:

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

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

好! 没关系; 我find了解决scheme。 与403怀疑HTTP不是正确的URL。

将默认生成的具有login凭证的文件更改为~/.docker/config.json

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

要注意从docker.io – > index.docker.io/v1的变化。 这是变化。

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

希望有所帮助。

请注意,auth字段应该是'用户名:密码'base64编码。例如:“用户名:密码”base64编码是“dXNlcm5hbWU6cGFzc3dvcmQ =”

所以你的文件将包含:

 "auth": "dXNlcm5hbWU6cGFzc3dvcmQ=" 

我遇到了一个类似的问题,类似的无益的错误消息,但事实certificate,因为我试图推动一个图像,我已经build立了一个docker机pipe理的实例。

当我login到实例本身, docker logindocker push一切工作正常。

我有同样的问题,但我用指定的url推送固定它。 如:dockerlogin-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 

即使我login和检查所有的configuration,它仍然无法正常工作!

事实certificate,当我build立我的docker时,我忘记把我的用户名之前的回购名称

 docker build docker-meteor-build 

(成功build立)

然后当我推到我的存储库,我用

 docker push myname/docker-meteor-build 

它会显示unauthorized authentication required

所以,解决scheme是build立的名称和推动应该是完全一样的

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

虽然标准的过程是login,然后推入dockerregistry,诡计克服这个特定的问题是通过提供用户名和密码在同一行login。

所以:

 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 

失败

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

Docker允许你有6个私人图像命名,即使你只支付5,但不推动第6个图像。 缺乏信息的消息令人困惑和恼火。

什么对我来说是创build一个新的存储库,并重新命名图像

$ docker tag image_id myname/server:latest

这里我的案例解决scheme(私人回购,免费账户计划)

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

要推送的图像构build名称必须具有相同的回购站名称。

例如:docker hub上的仓库是:accountName / resposName imagebuild立名称“accountName / resposName” – > docker build -t accountName / resposName

然后inputdocker push accountName / resposName:latest

就这样。

新手面临的问题是,我们倾向于像对待maven仓库一样对待docker hub仓库,并认为它可能包含许多不同的文件,文件夹和其他内容。

另一方面,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' 

确保您的docker仓库名称与您的本地docker仓库名称相匹配。 例如可以说,如果你当地的回购名称“kavashgar / nodjsapp”

那么你也应该在docker中心有一个回购的名字“kavashgar”

确保你有更多的私人图像插槽。

在我的情况下,我把用户转换成了一个组织,它失去了一个免费的私人图像,所以以前的推送工作,不再工作。

在你的configuration文件〜/ .docker / config.json中添加

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

其中XXXXX是您的用户名的 base64编码 https ://hub.docker.com的密码 (包括:)

在我的情况下,我有一个拉相同的错误。 问题(在Windows下)是由双docker运行过程引起的,所以杀了他们,重新启动一个服务,它的工作。

已经有了很好的答案,但我想提一个 – 在推送之前,您不需要预先创build存储库。

我的问题是,我没有设置我login的帐户正确的用户名。 但是,一旦正确的用户名被设置在图像之前(例如YOURNAME/YOURIMAGE )通过它的标签,你可以推动它,而无需提前创build一个新的存储库。

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

这里同样的问题,在推送图像:

 unauthorized: authentication required 

我做了什么:

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

它打印的是:

– 电子邮件已弃用(但login仍然成功)

解决scheme:使用最新的login语法。

 docker login 

它将交互地询问用户名密码 。 然后,图像推送工作。

即使在使用新的语法之后,我的~/.docker/config.json在login后看起来像这样:

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

所以证书是在macOS的keychain。

不要用纯文本输出密码。

你可以用以下方式login

 docker login --username=<username> 

它应该提示你input密码(更安全)。

谢谢!

我已经收到类似的错误为sudodocker推/ sudodocker拉ecr存储库。这是因为aws cli安装在我的用户(ABC)和docker安装在根用户。我试图运行sudo泊坞窗推我的用户(abc)

修正了这个问题,把aws cli安装在根目录下,使用aws configure在root下configurationaws,运行sudo docker push到ecr root用户