这些是我设置自定义 Gitlab 运行程序所遵循的步骤:
按照此处的说明安装 Gitlab 运行程序:https://docs.gitlab.com/runner/install/linux-repository.html
使用
docker
执行者和docker:19
图像注册跑步者
写
gitlab-ci.yml
如下:
image: docker:19.03.1
services:
- name: docker:19.03.1-dind
alias: docker
stages:
- build
build:
stage: build
variables:
IMAGE_TAG: repo.azurecr.io/some-repo
DOCKER_HOST: tcp://172.17.0.1:2375
DOCKER_TLS_CERTDIR: ''
script:
- docker login someacr.azurecr.io -u "$SERVICE_PRINCIPAL_USER" -p "$SERVICE_PRINCIPAL_PASSWORD"
- if [[ "$CI_COMMIT_REF_NAME" == "develop" ]]; then docker build -t $IMAGE_TAG .; fi
Login succeeded
if [[ "$CI_COMMIT_REF_NAME" == "develop" ]]; then docker build -t $IMAGE_TAG .; fi
Cannot connect to the Docker daemon at tcp://172.17.0.1:2375. Is the docker daemon running?
Cleaning up project directory and file based variables
00:02
ERROR: Job failed: exit code 1
这是我迄今为止尝试过的:
privileged: true
在 /etc/gitlab-runner/config.toml
dind:19
gitlab-ci.yml
volumes = ["/var/run/docker.sock /var/run/docker.sock" "/cache"]
中添加
/etc/gitlab-runner/config.toml
DOCKER_TLS_CERTDIR: ''
中使用 gitlab-ci.yml
作为变量DOCKER_HOST
填充
DOCKER_HOST: tcp://172.17.0.1:2375
所有这些更改都会导致此处的 Gitlab Runner 故障排除中描述的两个问题之一:https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#troubleshooting
您的
DOCKER_HOST
变量值不正确。
使用
DOCKER_HOST: "tcp://docker:2375"
在/etc/gitlab-runner/config.toml中添加volumes = [“/var/run/docker.sock /var/run/docker.sock”“/cache”]
我建议从此处的运行器配置中删除
/var/run/docker.sock
的卷安装。当利用 docker:dind
服务容器方法时,这不是必需的。不过,从技术上来说它不会造成问题。
特权:在 /etc/gitlab-runner/config.toml 中为 true
[...]
在 gitlab-ci.yml 中使用 DOCKER_TLS_CERTDIR: '' 作为变量
这些改变很好,保留这些改变。
为了在 gitlab ci 中最小化 docker:dind 的问题,必须正确设置四个参数:
部分 .gitlab-ci.yml 文件示例如下:
variables:
DOCKER_DIND: "docker:20.10.16-dind"
DOCKER_TLS_CERTDIR: "/certs"
DOCKER_HOST: "tcp://docker:2375"
FF_NETWORK_PER_BUILD: "true"
job_name:
image: julienlecomte/docker-make
services:
- $DOCKER_DIND
script:
- /bin/true