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

docker unauthorized:需要身份验证-成功登录后推送,docker,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/docke

在从主机推送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
  • Docker版本:1.9.1(客户端和服务器)
  • 还创建了回购协议(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

任何帮助是感激的,请让我知道如果你需要进一步的信息。我也用-f推了推。不走运

好的!不要介意;我找到了解决办法。与403一起,我们怀疑HTTP没有连接到正确的URL

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

{
        "auths": {
                "docker.io": {
                        "auth": "XXXXXXXXXXXXX",
                        "email": "x.y@gmail.com"
                }
        }
}
注意docker.io->index.docker.io/v1的更改。这就是变化

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

请注意,auth字段应为“username:password”base64编码。 例如:“username:password”base64编码为“dXNlcm5hbWU6cGFzc3dvcmQ=”

因此,您的文件将包含:

"auth": "dXNlcm5hbWU6cGFzc3dvcmQ="

你发布的解决方案不适用于我

这对我来说很有用:

  • 使用所需名称创建存储库

  • 提交映像时,将映像命名为与存储库类似的名称,包括用户名
    /desired name
    。例如,
    radu/desired name


  • 我遇到了一个类似的问题,出现了一条同样没有帮助的错误消息,但结果是因为我试图推送一个针对docker机器管理的实例构建的映像


    当我登录到实例本身时,docker登录和docker推送一切正常。

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


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

    我也有同样的问题,但我通过使用指定url推送修复了它。 as:docker登录-u

    控制台输出:

    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
    
    推送引用存储库[docker.io//richcity]
    adc9144127c1:准备
    4db5654f7a64:准备
    ce71ae73bc60:准备
    e8e980243ee4:准备
    d773e991f7d2:准备
    BAE23F4BE95:等待
    5f70bf18a086:正在等待
    3d3e4e34386e:等待
    e72d5d9d5d30:等待
    8d1d75696199:等待
    bdf5b19f60a4:正在等待
    c8bd8922fbb7:正在等待
    未经授权:需要身份验证
    1010deiMac:dockerspacewhoami$docker登录-uhttps://index.docker.io/v1/
    密码:
    登录成功
    1010deiMac:dockerspace whoami$docker push/richcity
    推送引用存储库[docker.io//richcity]
    adc9144127c1:按下
    4db5654f7a64:按下
    ce71ae73bc60:已按下
    e8e980243ee4:按下
    d773e991f7d2:按下
    BAE23F4BE95:已按下
    5f70bf18a086:已按下
    3d3e4e34386e:推送[================>]45.07 MB/165.4 MB
    e72d5d9d5d30:按下
    8d1d75696199:推送[>]1.641 MB/118.1 MB
    bdf5b19f60a4:推送[================>]142 MB/568.4 MB
    c8bd8922fbb7:推送[=========================>]59.44 MB/121.8 MB
    
    您需要登录到Docker

    步骤1:登录到docker hub 根据@KaraPirinc的评论,在Docker版本17中,为了登录:

    docker login -u username --password-stdin
    
    然后在询问时输入密码

    步骤2:在中创建存储库。 让我们说“mysqlserver:sql

    docker推送/mysqlserver:sql
    
    确保您的docker Repository名称与本地docker repo名称匹配。 e、 让我们说一下,如果您将本地回购命名为“kavashgar/nodjsapp”


    那么,您也应该在docker hub中有一个repo名称“kavashgar”

    对我来说,有效的方法是创建一个新的存储库,并使用


    $docker tag image\u id myname/server:latest

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

    要推送的映像生成名称必须与repo具有相同的名称

    例如: docker hub上的回购为:accountName/resposName 映像生成名称“accountName/resposName”->docker生成-t accountName/resposName

    然后键入 docker push accountName/resposName:最新


    仅此而已。

    确保您有更多用于私人图像的插槽


    在我的例子中,我将一个用户转换为一个组织,但它丢失了一个免费的私有映像,因此以前的推送工作,不再工作。

    即使我登录并检查了所有配置,它仍然不工作

    事实证明,当我构建docker时,我忘了将用户名放在回购协议名称之前

    docker build docker-meteor-build 
    
    (成功构建)

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

    docker push myname/docker-meteor-build 
    
    它将显示所需的
    未经授权的身份验证

    所以,解决方案就是构建的名称,推送应该完全相同

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

    在配置文件~/.docker/config.json中添加

    {
            "auths": {
                 "https://index.docker.io/v1/": {
                            "auth": "XXXXXXXXXXXXX",
                            "email": "my_email@gmail.com"
                    }
            }
    }
    
    其中XXXXX是您的用户名:密码的base64编码


    在我的例子中,我拉的时候也有同样的错误。问题(在windows下)是由docker运行的双进程引发的,所以一个杀死他们并重新启动一个服务,它就会工作。

    虽然标准的过程是登录然后推送到docker注册表,但克服这个特殊问题的诀窍是通过在同一行中提供用户名和密码登录

    因此:

    有效

    鉴于

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

    失败

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

    我的问题是,我没有为我登录的帐户设置正确的用户名。但是,一旦在图像之前设置了正确的用户名(例如,
    YOURNAME/YOURIMA
    
    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
    
    sudo docker tag IMAGE:VERSION USERNAME/IMAGE:VERSION
    sudo docker push USERNAME/IMAGE:VERSION
    
    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'
    
    unauthorized: authentication required
    
    docker login --username=yourhubusername --email=youremail@company.com
    
    docker login
    
    {
        "auths": {
            "https://index.docker.io/v1/": {}
        },
        "credsStore": "osxkeychain"
    }
    
    #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
    
    Error response from daemon: Get https://registry-1.docker.io/v2/hadolint/hadolint/manifests/latest: unauthorized: incorrect username or password
    
    {
        "auths": {
            "XxX": {
                "auth": "XxX"
            }
        }
    }
    
    service docker restart