我们正在尝试使用Docker Hub来存储GitLab CICD构建过程中生成和使用的镜像,但在使其正常工作方面遇到了一些问题。
我已经成功地推送了在CICD中构建的映像。build
阶段到Docker Hub,这很好用,行不通的是想再把它拉下来,为 rspec
阶段。我得到以下错误。
ERROR: Job failed: 工作失败。来自守护进程的错误响应:foxsoftzzz的拉动访问被拒绝,仓库不存在或可能需要 "docker登录":被拒绝:对资源的请求访问被拒绝(executor_docker.go:192:1s)。
我想假设这与我的登录凭证在试图拉下图像时没有被正确接收有关,但我不确定。如果您能提供任何帮助,我将感激不尽。
这是我的配置。
before_script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD"
.ruby_base:
image: ruby:2.5.5
before_script:
- ruby -v
.docker_base:
image: docker:stable
services:
- docker:stable-dind
- postgres:9.6
variables:
DOCKER_HOST: tcp://docker:2375
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: ""
CONTAINER_TEST_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
before_script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD
stages:
- build
- test
build:images:
extends: .docker_base
stage: build
script:
- docker build -t $CONTAINER_TEST_IMAGE .
- docker push $CONTAINER_TEST_IMAGE
test:rspec:
before_script:
- echo $CONTAINER_TEST_IMAGE
- echo $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD
image: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
stage: test
services:
- postgres:9.6
variables:
POSTGRES_DB: zzz_test
DB_HOST: postgres
script:
- bundle exec rake db:create RAILS_ENV=test
- bundle exec rake db:schema:load RAILS_ENV=test
- bundle exec rspec --format html --out rspec/index.html --format documentation
我还设置了以下环境变量:
CI_REGISTRY_USER
我的docker hub用户名CI_REGISTRY_PASSWORD
我的docker hub令牌CI_REGISTRY_IMAGE
设置为 foxsoft/zzz
(它的主机是 此处 - 虽然作为私人仓库,你将无法看到它)
谢谢你,我们正在尝试使用Docker Hub来存储GitLab CICD构建过程中生成并使用的镜像,但在使其正常工作方面遇到了一些问题。
我已经解决了这个问题(我想),通过创建一个 "Docker Hub "来解决这个问题。DOCKER_AUTH_CONFIG
变量,并将其设置为以下内容。
{
"auths":{
"index.docker.io":{
"auth":"HASHED_USERNAME_AND_PASSWORD"
}
}
}
这个... HASHED_USERNAME_AND_PASSWORD
值是通过在我的本地机器上运行以下命令生成的。
echo -n "docker_hub_username:docker_hub_security_token" | base64