Gitlab CI 尝试从 public docker hub 中找到 'of:latest' 图像
Gitlab CI tries to find 'of:latest' image from public docker hub
我有以下 .gitlab-ci.yml 长生不老药项目的任务:
image: docker:latest
services:
- docker:dind
stages:
- build
- test
- release
- deploy
variables:
TEMP_IMAGE: registry.gitlab.com/farmmix/homepage/farmmix_homepage:$CI_COMMIT_SHA
before_script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com
build:
stage: build
script:
- cd src
- docker build --pull -t $TEMP_IMAGE .
- docker push $TEMP_IMAGE
test:
stage: test
variables:
DB_DATABASE: test
DB_USERNAME: postgres
DB_PASSWORD: postgres
DB_URL: postgres
script:
- echo $TEMP_IMAGE
- docker pull $TEMP_IMAGE
- docker pull postgres:9.5-alpine
- docker run --name postgres -e POSTGRES_DB=$DB_DATABASE -e POSTGRES_USER=$DB_USERNAME -e POSTGRES_PASSWORD=$DB_PASSWORD -d postgres:9.5-alpine
- docker run --link postgres $TEMP_IMAGE ecto.create ecto.migrate test
$TEMP_IMAGE
是在之前的 build
任务中创建的现有图像。
如果我 运行 在本地使用 gitlab-runner exec docker --docker-privileged test
,它工作正常。
然而,gitlab 运行ner 给了我以下内容:
... AFTER INITIALIZATION ...
Skipping Git submodules setup
$ docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Login Succeeded
$ echo $TEMP_IMAGE
registry.gitlab.com/farmmix/homepage/farmmix_homepage:b0c30097a320933f7d5390d7037960e34d2ef7d
$ docker pull $TEMP_IMAGE
b0c30097a320933f7d5390d7037960e34d2ef7d0: Pulling from farmmix/homepage/farmmix_homepage
605ce1bd3f31: Pulling fs layer
...
e0c7f5df971a: Pull complete
Digest: sha256:ce7a1bf2378628902e171a22ee386af6c79e8d2340b6241ab70e83173e32ce28
Status: Downloaded newer image for registry.gitlab.com/farmmix/homepage/farmmix_homepage:b0c30097a320933f7d5390d7037960e34d2ef7d0
$ docker pull postgres:9.5-alpine
9.5-alpine: Pulling from library/postgres
550fe1bea624: Pulling fs layer
04bf519c70df: Pulling fs layer
...
0dca1c6b5036: Pull complete
Digest: sha256:fc3b8fcc8ba568492ce89fd8723a949f586e2919d7884b9b1d8064237ba105d7
Status: Downloaded newer image for postgres:9.5-alpine
$ docker run --name postgres -e POSTGRES_DB=$DB_DATABASE -e POSTGRES_USER=$DB_USERNAME -e POSTGRES_PASSWORD=$DB_PASSWORD -d postgres:9.5-alpine
Unable to find image 'of:latest' locally
docker: Error response from daemon: pull access denied for of, repository does not exist or may require 'docker login'.
See 'docker run --help'.
ERROR: Job failed: exit code 125
我什至在互联网上找不到任何关于这个 'of:latest'
错误的信息。我在没有 -e
参数的情况下尝试了 运行ning docker run
命令,但出现了同样的错误,所以并不是环境变量造成了任何问题。
我运行没主意了。你们中有人怀疑解决方案可能是什么吗?
编辑:添加了完整的.gitlab-ci.yml
内容
EDIT2:添加 echo
和作业输出
$ docker run --name postgres -e POSTGRES_DB=$DB_DATABASE -e POSTGRES_USER=$DB_USERNAME -e POSTGRES_PASSWORD=$DB_PASSWORD -d postgres:9.5-alpine
Unable to find image 'of:latest' locally
docker: Error response from daemon: pull access denied for of, repository does not exist or may require 'docker login'.
您的其中一个变量几乎肯定包含字符串 " of "。您可以通过添加一行来测试它:
echo docker run --name postgres -e POSTGRES_DB=$DB_DATABASE -e POSTGRES_USER=$DB_USERNAME -e POSTGRES_PASSWORD=$DB_PASSWORD -d postgres:9.5-alpine
先看看它在尝试什么 运行。对于变量,最好引用它们以避免任何特殊字符或空格的问题:
docker run --name postgres -e "POSTGRES_DB=$DB_DATABASE" -e "POSTGRES_USER=$DB_USERNAME" -e "POSTGRES_PASSWORD=$DB_PASSWORD" -d postgres:9.5-alpine
我有以下 .gitlab-ci.yml 长生不老药项目的任务:
image: docker:latest
services:
- docker:dind
stages:
- build
- test
- release
- deploy
variables:
TEMP_IMAGE: registry.gitlab.com/farmmix/homepage/farmmix_homepage:$CI_COMMIT_SHA
before_script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com
build:
stage: build
script:
- cd src
- docker build --pull -t $TEMP_IMAGE .
- docker push $TEMP_IMAGE
test:
stage: test
variables:
DB_DATABASE: test
DB_USERNAME: postgres
DB_PASSWORD: postgres
DB_URL: postgres
script:
- echo $TEMP_IMAGE
- docker pull $TEMP_IMAGE
- docker pull postgres:9.5-alpine
- docker run --name postgres -e POSTGRES_DB=$DB_DATABASE -e POSTGRES_USER=$DB_USERNAME -e POSTGRES_PASSWORD=$DB_PASSWORD -d postgres:9.5-alpine
- docker run --link postgres $TEMP_IMAGE ecto.create ecto.migrate test
$TEMP_IMAGE
是在之前的 build
任务中创建的现有图像。
如果我 运行 在本地使用 gitlab-runner exec docker --docker-privileged test
,它工作正常。
然而,gitlab 运行ner 给了我以下内容:
... AFTER INITIALIZATION ...
Skipping Git submodules setup
$ docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Login Succeeded
$ echo $TEMP_IMAGE
registry.gitlab.com/farmmix/homepage/farmmix_homepage:b0c30097a320933f7d5390d7037960e34d2ef7d
$ docker pull $TEMP_IMAGE
b0c30097a320933f7d5390d7037960e34d2ef7d0: Pulling from farmmix/homepage/farmmix_homepage
605ce1bd3f31: Pulling fs layer
...
e0c7f5df971a: Pull complete
Digest: sha256:ce7a1bf2378628902e171a22ee386af6c79e8d2340b6241ab70e83173e32ce28
Status: Downloaded newer image for registry.gitlab.com/farmmix/homepage/farmmix_homepage:b0c30097a320933f7d5390d7037960e34d2ef7d0
$ docker pull postgres:9.5-alpine
9.5-alpine: Pulling from library/postgres
550fe1bea624: Pulling fs layer
04bf519c70df: Pulling fs layer
...
0dca1c6b5036: Pull complete
Digest: sha256:fc3b8fcc8ba568492ce89fd8723a949f586e2919d7884b9b1d8064237ba105d7
Status: Downloaded newer image for postgres:9.5-alpine
$ docker run --name postgres -e POSTGRES_DB=$DB_DATABASE -e POSTGRES_USER=$DB_USERNAME -e POSTGRES_PASSWORD=$DB_PASSWORD -d postgres:9.5-alpine
Unable to find image 'of:latest' locally
docker: Error response from daemon: pull access denied for of, repository does not exist or may require 'docker login'.
See 'docker run --help'.
ERROR: Job failed: exit code 125
我什至在互联网上找不到任何关于这个 'of:latest'
错误的信息。我在没有 -e
参数的情况下尝试了 运行ning docker run
命令,但出现了同样的错误,所以并不是环境变量造成了任何问题。
我运行没主意了。你们中有人怀疑解决方案可能是什么吗?
编辑:添加了完整的.gitlab-ci.yml
内容
EDIT2:添加 echo
和作业输出
$ docker run --name postgres -e POSTGRES_DB=$DB_DATABASE -e POSTGRES_USER=$DB_USERNAME -e POSTGRES_PASSWORD=$DB_PASSWORD -d postgres:9.5-alpine
Unable to find image 'of:latest' locally
docker: Error response from daemon: pull access denied for of, repository does not exist or may require 'docker login'.
您的其中一个变量几乎肯定包含字符串 " of "。您可以通过添加一行来测试它:
echo docker run --name postgres -e POSTGRES_DB=$DB_DATABASE -e POSTGRES_USER=$DB_USERNAME -e POSTGRES_PASSWORD=$DB_PASSWORD -d postgres:9.5-alpine
先看看它在尝试什么 运行。对于变量,最好引用它们以避免任何特殊字符或空格的问题:
docker run --name postgres -e "POSTGRES_DB=$DB_DATABASE" -e "POSTGRES_USER=$DB_USERNAME" -e "POSTGRES_PASSWORD=$DB_PASSWORD" -d postgres:9.5-alpine