自定义 Gitlab Runner 失败 - 无法连接到 Docker 守护程序
Custom Gitlab Runner Failing - Cannot connect to the Docker daemon
这些是我设置自定义 Gitlab 运行程序所遵循的步骤:
按照此处的说明安装 Gitlab runner: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
docker 图片在 gitlab-ci.yml
- 在
/etc/gitlab-runner/config.toml
中添加 volumes = ["/var/run/docker.sock /var/run/docker.sock" "/cache"]
- 在
gitlab-ci.yml
中使用DOCKER_TLS_CERTDIR: ''
作为变量
- 用
DOCKER_HOST: tcp://172.17.0.1:2375
填充 DOCKER_HOST
变量
- 更多...
所有这些更改都会导致 Gitlab Runner 故障排除中描述的 2 个问题之一:https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#troubleshooting
- docker: 无法连接到位于 tcp://docker:2375 的 Docker 守护进程。 docker 守护程序是 运行 吗?
- Docker 没有这样的主机错误
如有任何帮助,我们将不胜感激。
谢谢。
您的 DOCKER_HOST
变量值不正确。
使用DOCKER_HOST: "tcp://docker:2375"
adding volumes = ["/var/run/docker.sock /var/run/docker.sock" "/cache"] in /etc/gitlab-runner/config.toml
我建议从此处的运行器配置中删除 /var/run/docker.sock
的卷安装。在利用 docker:dind
服务容器方法时,这不是必需的。不过,从技术上讲,它不会引起问题。
privileged: true in /etc/gitlab-runner/config.toml
[...]
used DOCKER_TLS_CERTDIR: '' in gitlab-ci.yml as variable
这些改动很好,保留这些改动。
这些是我设置自定义 Gitlab 运行程序所遵循的步骤:
按照此处的说明安装 Gitlab runner: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
docker 图片在gitlab-ci.yml
- 在
/etc/gitlab-runner/config.toml
中添加 - 在
gitlab-ci.yml
中使用DOCKER_TLS_CERTDIR: ''
作为变量 - 用
DOCKER_HOST: tcp://172.17.0.1:2375
填充 - 更多...
volumes = ["/var/run/docker.sock /var/run/docker.sock" "/cache"]
DOCKER_HOST
变量
所有这些更改都会导致 Gitlab Runner 故障排除中描述的 2 个问题之一:https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#troubleshooting
- docker: 无法连接到位于 tcp://docker:2375 的 Docker 守护进程。 docker 守护程序是 运行 吗?
- Docker 没有这样的主机错误
如有任何帮助,我们将不胜感激。
谢谢。
您的 DOCKER_HOST
变量值不正确。
使用DOCKER_HOST: "tcp://docker:2375"
adding volumes = ["/var/run/docker.sock /var/run/docker.sock" "/cache"] in /etc/gitlab-runner/config.toml
我建议从此处的运行器配置中删除 /var/run/docker.sock
的卷安装。在利用 docker:dind
服务容器方法时,这不是必需的。不过,从技术上讲,它不会引起问题。
privileged: true in /etc/gitlab-runner/config.toml
[...]
used DOCKER_TLS_CERTDIR: '' in gitlab-ci.yml as variable
这些改动很好,保留这些改动。