docker - 无法使用 docker login --password-stdin

我想在自动构建过程中将构建的 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 interactive。

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 的区别,这取决于使用交互式登录和包含密码的登录。

有人知道如何让这个设置工作吗?

最佳答案

我遇到了类似的问题,因为 $USERNAME 包含 $ 字符。通过在 .gitlab-ci.yml 中直接使用带转义字符的名称进行 docker 登录
示例:机器人\$我的名字

gitlab 按预期连接到 docker hub。

https://stackoverflow.com/questions/56390416/

相关文章:

java - 如何在 Reactive Spring WEBFlux(Spring 5) 中读取上传

python - 函数定义的 Pythonic 顺序是什么?

python - Jupyter 笔记本 : how to run python shell com

java - 不再支持嵌入 Flash 的视频

f# - 如何为 Saturn 应用构建集成测试

reactjs - 使用 react-testing-library 时让 react-datepi

javascript - 如何让外部库 intellisense 在 vscode for java

javascript - 当我在滚动功能上添加动画时,导航栏熄灭

amazon-web-services - AWS ECR 如何限制除最新标签之外的重新标记

mysql - 如果我定义一个卷,Docker-compose 将不会启动 MySQL