Docker: 如何为 docker 推送进行身份验证?
Docker: How to authenticate for docker push?
嗨,我正在尝试 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
命令上指定 username
和 password
?
出于安全原因,我认为他们不会在命令行中设置密码。
方法是先登录再push。
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
据我所知你必须使用 docker login
。凭据将存储在 /home/user/.docker/config.json
中以供后续 docker push
es.
如果您在自动化之后,命令 expect
对您来说会很有趣。
通常您会使用交互式 docker login
指定您的密码,然后执行 docker push
.
对于非交互式登录,您可以使用 -u
和 -p
标志:
docker login -u="${DOCKER_USERNAME}" -p="${DOCKER_PASSWORD}"
Travis CI docs for docker builds gives an example of how to automate a docker login.
有关详细信息,请参阅 docker login。
如果需要登录自定义 docker 存储库,请使用以下内容:
docker login -u ${USERNAME} -p ${PASSWORD} ${DOCKER_REPOSITORY}
docker login --username=YOUR_DOCKERHUB_USERNAME
在这种情况下,您的 dockerhub 密码将是一个访问令牌。
参考:https://docs.docker.com/docker-hub/access-tokens/#create-an-access-token
如果您使用 IP 标记图像,则使用 IP 登录 docker 注册表,如果您使用域名标记图像,则使用域名登录 docker,以某种方式 docker不喜欢混合 IP 和域并失败。
不是直接回答问题,但是你可以先登录然后docker推送。
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
使用“sudo docker 登录”而不是“docker 登录”,因为一个使用根帐户,另一个使用您的个人帐户。
我个人在上传之前在 docker 的网站上创建了存储库。
接受的答案非常好!但是,如果您尝试访问私有注册表,则可能需要考虑提出以下更改请求。
docker login -u ${user_name} ${private_registry_domain}
提供密码,当它提示相同时。
嗨,我正在尝试 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
命令上指定 username
和 password
?
出于安全原因,我认为他们不会在命令行中设置密码。
方法是先登录再push。
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
据我所知你必须使用 docker login
。凭据将存储在 /home/user/.docker/config.json
中以供后续 docker push
es.
如果您在自动化之后,命令 expect
对您来说会很有趣。
通常您会使用交互式 docker login
指定您的密码,然后执行 docker push
.
对于非交互式登录,您可以使用 -u
和 -p
标志:
docker login -u="${DOCKER_USERNAME}" -p="${DOCKER_PASSWORD}"
Travis CI docs for docker builds gives an example of how to automate a docker login.
有关详细信息,请参阅 docker login。
如果需要登录自定义 docker 存储库,请使用以下内容:
docker login -u ${USERNAME} -p ${PASSWORD} ${DOCKER_REPOSITORY}
docker login --username=YOUR_DOCKERHUB_USERNAME
在这种情况下,您的 dockerhub 密码将是一个访问令牌。
参考:https://docs.docker.com/docker-hub/access-tokens/#create-an-access-token
如果您使用 IP 标记图像,则使用 IP 登录 docker 注册表,如果您使用域名标记图像,则使用域名登录 docker,以某种方式 docker不喜欢混合 IP 和域并失败。
不是直接回答问题,但是你可以先登录然后docker推送。
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
使用“sudo docker 登录”而不是“docker 登录”,因为一个使用根帐户,另一个使用您的个人帐户。
我个人在上传之前在 docker 的网站上创建了存储库。
接受的答案非常好!但是,如果您尝试访问私有注册表,则可能需要考虑提出以下更改请求。
docker login -u ${user_name} ${private_registry_domain}
提供密码,当它提示相同时。