【问题标题】:Docker: How to authenticate for docker push?Docker:如何对 docker push 进行身份验证?
【发布时间】:2016-03-29 19:16:26
【问题描述】:

嗨,我正在尝试docker push

[docker-simple-httpserver]# docker push myregistry/simplehttpserver:latest
The push refers to a repository [myregistry/simplehttpserver] (len: 1)
Sending image list
FATA[0000] Error: Status 403 trying to push repository simplehttpserver: "{\"error\": \"Unauthorized updating repository images\"}" 

我有没有办法在docker push 命令上指定usernamepassword

【问题讨论】:

    标签: docker docker-registry


    【解决方案1】:

    不是直接回答问题,但是可以先登录再做docker push。

    docker login -unice-username

    之后它会提示输入密码。登录成功后就可以做docker push了。

    WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
    Configure a credential helper to remove this warning. See
    https://docs.docker.com/engine/reference/commandline/login/#credentials-store
    
    Login Succeeded
    

    【讨论】:

      【解决方案2】:

      如果您使用 IP 标记图像,则使用 IP 登录 docker 注册表,如果您使用域名标记图像,则使用域名登录 docker,不知何故 docker 不喜欢将 IP 和域混合并失败。

      【讨论】:

        【解决方案3】:

        通常您会使用交互式docker login 指定您的密码,然后使用docker push

        对于非交互式登录,您可以使用 -u-p 标志:

        docker login -u="${DOCKER_USERNAME}" -p="${DOCKER_PASSWORD}"
        

        Travis CI docs for docker builds 给出了如何automate a docker login 的示例。

        更多详情请见docker login

        【讨论】:

          【解决方案4】:

          docker login --username=YOUR_DOCKERHUB_USERNAME

          在这种情况下,您的 dockerhub 密码将是访问令牌。

          参考:https://docs.docker.com/docker-hub/access-tokens/#create-an-access-token

          【讨论】:

            【解决方案5】:

            如果需要登录自定义 docker repo,请使用以下代码:

            docker login -u ${USERNAME} -p ${PASSWORD} ${DOCKER_REPOSITORY}
            

            【讨论】:

              【解决方案6】:

              据我所知,您必须使用docker login。凭据将存储在/home/user/.docker/config.json 中以供关注docker pushes。

              如果您使用自动化,那么命令 expect 对您来说会很有趣。

              【讨论】:

                【解决方案7】:

                我认为他们出于安全原因将密码保留在命令行之外。

                方法是先登录再推送。

                https://docs.docker.com/mac/step_six/

                $ docker login --username=maryatdocker --email=mary@docker.com
                Password:
                WARNING: login credentials saved in C:\Users\sven\.docker\config.json
                Login Succeeded
                

                然后推

                $ docker push maryatdocker/docker-whale
                The push refers to a repository [maryatdocker/docker-whale] (len: 1)
                7d9495d03763: Image already exists
                c81071adeeb5: Image successfully pushed
                

                【讨论】:

                • 但是如果你不能内联指定用户名和密码在终端运行登录,一个人如何使用 CJE 之类的东西将构建的图像推送到 Jenkinsfile 中的注册表?跨度>
                • 此处显示的登录步骤是手动的,需要交互式终端和输入密码的人员。一种自动化的方法是 seveibar 的答案,另一种方法是在这里使用与 --password-stdin 相同的命令 - 就像这样:docker login --username=<user> --password-stdin <<<'password'
                猜你喜欢
                • 2017-10-17
                • 2022-01-10
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多