无法使用docker login --password-stdin

时间:2019-05-31 07:15:23

标签: docker dockerhub

我想在自动构建过程中将构建的docker映像推送到中央docker hub中。为此,我需要先登录,然后再进行推送。

.gitlab-ci.yml文件的相关部分如下:

docker-deploy:
  image: docker:latest
  stage: deploy
  before_script:
    - echo $HUB_PW | docker login -u $HUB_USER --password-stdin
  after_script:
    - docker logout
  script:
    - docker push <mytag>:$CI_PIPELINE_ID

我在Gitlab CI中遇到以下错误

$ echo $HUB_PW | docker login -u $HUB_USER --password-stdin
Error response from daemon: Get https://registry-1.docker.io/v2/: unauthorized: incorrect username or password

正确设置了相关的环境变量$HUB_PW$HUB_USER

我试图在linux bash上做同样的事情,并使用docker,结果也一样。

但是,我能够以交互方式登录docker。

docker login
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: <myusername>
Password: 
Login Succeeded

注销后,我得到

docker logout
Removing login credentials for https://index.docker.io/v1/

无法在自动构建中进行交互式登录。而且我不了解集线器URL的区别,这取决于使用交互式登录名和附带密码的登录名。

有人知道如何使该设置正常工作吗?

2 个答案:

答案 0 :(得分:0)

我有类似的问题,因为$ USERNAME包含$字符。通过直接在.gitlab-ci.yml中使用带有转义字符的名称进行docker登录
example: robot\$myname

gitlab按预期连接到docker hub。

答案 1 :(得分:0)

其中带有 $ 的 Gitlab 变量可以使用双美元符号进行转义,例如robot$$pusher

\$ 在企业版 13.6.7-ee 上对我不起作用,但据我所知,至少从社区版 11.0.3 起,双美元转义语法就已经存在了