gitlab-runner exec with dind (docker in docker) 最小工作示例

S.R*_*S.R 5 docker gitlab-ci gitlab-ci-runner docker-in-docker

这是我的.gitlab-ci.yml文件:

image: docker:18

varibales:
  DOCKER_DRIVER: "overlay2"
  DOCKER_HOST: tcp://docker:2375

test:
  services:
    - "docker:18-dind"
  script:
    - docker info
Run Code Online (Sandbox Code Playgroud)

我运行它:

gitlab-runner exec docker --docker-privileged --docker-pull-policy if-not-present --docker-tlsverify=false test
Run Code Online (Sandbox Code Playgroud)

它有效。


但我想使用当前的 docker 版本。所以我读了这个文档

gitlab-runner exec docker --docker-privileged --docker-pull-policy if-not-present --docker-tlsverify=false test
Run Code Online (Sandbox Code Playgroud)

我用与上面相同的方式运行它:

gitlab-runner exec docker --docker-privileged --docker-pull-policy if-not-present --docker-tlsverify=false test
Run Code Online (Sandbox Code Playgroud)

不幸的是,这以错误结束:

错误:无法连接到位于 tcp://docker:2375 的 Docker 守护进程。docker 守护进程是否正在运行?

我已经看到这个问题和许多其他问题。但我找不到一个可以gitlab-runner exec docker在每个 UNIX 系统上使用docker:19的最小工作示例docker:19-dind

编辑:
gitlab-runner --version(来自 Manajaro 仓库):

Version:      13.0.0
Git revision: HEAD
Git branch:   HEAD
GO version:   go1.14.4
Built:        unknown
OS/Arch:      linux/amd64
Run Code Online (Sandbox Code Playgroud)