如何在docker push上指定用户名和密码?

Jas*_*Jas 22 docker docker-registry

嗨,我正在努力 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\"}" 
Run Code Online (Sandbox Code Playgroud)

是有我的方式来指定username,并passworddocker push命令?

Kee*_*yOn 28

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

这样做的方法是先登录然后再按.

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
Run Code Online (Sandbox Code Playgroud)

然后推

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

  • 但是,如果您无法内联指定用户名和密码来在终端中运行登录,那么人们如何使用CJE之类的东西将生成的映像推送到Jenkinsfile中的注册表中? (2认同)
  • 此处显示的登录步骤是手动的,需要交互式终端和有人输入密码。一种自动化的方法是 seveibar 的答案,另一种方法是在此处使用与 `--password-stdin` 相同的命令 - 就像这样:`docker login --username=<user> --password-stdin <<<'密码'` (2认同)

sev*_*bar 16

通常,您可以使用交互式指定密码,docker login然后执行a docker push.

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

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

Docker构建Travis CI文档提供了如何自动化docker登录的示例.

有关详细信息,请参阅docker login.


Kno*_*ads 11

如果需要登录自定义 docker 存储库,请使用以下命令:

docker login -u ${USERNAME} -p ${PASSWORD} ${DOCKER_REPOSITORY}
Run Code Online (Sandbox Code Playgroud)


Aru*_*ran 11

接受的答案工作得很好!但是,如果您尝试访问私有注册表,则可能需要考虑提出以下更改请求。

docker login -u ${user_name} ${private_registry_domain} 
Run Code Online (Sandbox Code Playgroud)

当提示输入相同密码时,请提供密码。


mic*_*ahr 6

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

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