自定义 Gitlab Runner 失败 - 无法连接到 Docker 守护进程

PHP*_*per 2 gitlab docker gitlab-ci gitlab-ci-runner

以下是我设置自定义 Gitlab 运行程序所遵循的步骤:

  1. 按照此处的说明安装 Gitlab 运行程序:https ://docs.gitlab.com/runner/install/linux-repository.html

  2. 使用dockerexetuor 和docker:19image注册一个 runner

  3. 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
Run Code Online (Sandbox Code Playgroud)
  1. 运行管道会抛出此错误:
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
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所尝试过的:

  1. privileged: true/etc/gitlab-runner/config.toml
  2. dind:19泊坞窗图像在gitlab-ci.yml
  3. 添加volumes = ["/var/run/docker.sock /var/run/docker.sock" "/cache"]/etc/gitlab-runner/config.toml
  4. 用作变量DOCKER_TLS_CERTDIR: ''gitlab-ci.yml
  5. 填充DOCKER_HOST变量DOCKER_HOST: tcp://172.17.0.1:2375
  6. 多得多...

所有这些更改都会导致 Gitlab Runner 故障排除中描述的两个问题之一: https: //docs.gitlab.com/ee/ci/docker/using_docker_build.html#troubleshooting

  1. docker:无法连接到位于 tcp://docker:2375 的 Docker 守护进程。docker 守护进程是否正在运行?
  2. Docker没有这样的主机错误。

syt*_*ech 6

您的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: '' 作为变量

这些改变是好的,保留这些改变。