我想在共享运行器上构建映像,并在gitlab注册表上构建。
然后,我想使用shell执行程序在服务器上使用运行程序来在服务器上提取该映像。
但是我遇到一个问题,当我尝试运行docker命令时,在我的shell执行器上遇到了这个错误
$ docker info
error during connect: Get http://docker:2375/v1.37/info: dial tcp: lookup docker on 172.31.0.2:53: no such host
这是我的gitlab-ci.yml
image: docker:stable
services:
- docker:dind
variables:
CONTAINER_IMAGE: registry.gitlab.com/$CI_PROJECT_PATH
DOCKER_HOST: tcp://docker:2375
DOCKER_DRIVER: overlay2
stages:
- build
- deploy
before_script:
- docker info
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com
build:
stage: build
script:
- docker pull $CONTAINER_IMAGE:latest || true
- docker build -f docker-images/web/Dockerfile --cache-from $CONTAINER_IMAGE:latest --tag $CONTAINER_IMAGE:$CI_COMMIT_SHA --tag $CONTAINER_IMAGE:latest .
- docker push $CONTAINER_IMAGE:$CI_COMMIT_SHA
- docker push $CONTAINER_IMAGE:latest
deploy:
stage: deploy
script:
- docker pull $CONTAINER_IMAGE:latest || true
tags:
- deploy
- shell
我在没有构建阶段的情况下进行了测试,并注释了变量DOCKER_HOST和服务docker:dind,并且可以正常工作。执行docker命令并正常运行。
这是我的新手,我认为问题是我的shell执行程序尝试与docker主机tcp:// docker:2375而不是我的docker引擎通信。
我该怎么办?我正在考虑调用shell脚本,然后在此脚本上运行docker命令。但是我想直接在gitlab-ci.yml
上做