如何设置gitlab runner以在gitlab ci中运行docker命令



我尝试配置gitlab runner,以便在.gitlab-ci.yml文件中使用docker命令。

我已经运行了两个容器来做到这一点:

  • gitlab/gitlab-ce:latest
  • gitlab/gitlab-runner:alpine

我已经为我的注册跑步者设置了特权模式:

[[runners]]
name = "first runner"
url = "http://my.domain.com:8484/"
token = "mySecretToken"
executor = "docker"
clone_url = "http://my.domain.com:8484/"
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[runners.docker]
tls_verify = false
image = "node:lts-alpine"
privileged = true
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache"]
shm_size = 0

我的管道可以很好地构建和运行测试。现在我想用我的节点构建的文件来构建nginxdocker容器。

当我刚运行docker version命令时,出现了一个错误:

$ docker version
Client: Docker Engine - Community
Version:           20.10.1
API version:       1.41
Go version:        go1.13.15
Git commit:        831ebea
Built:             Tue Dec 15 04:28:35 2020
OS/Arch:           linux/amd64
Context:           default
Experimental:      true
error during connect: Get http://docker:2375/v1.24/version: dial tcp: lookup docker on 8.8.8.8:53: no such host
ERROR: Job failed: exit code 1

也许这是我的.gitlab-ci.yml:中的一个错误

services:
- name: docker:dind
stages:
- construction
variables:
DOCKER_HOST: tcp://docker:2375/
DOCKER_DRIVER: overlay2
# See https://github.com/docker-library/docker/pull/166
DOCKER_TLS_CERTDIR: ""
deploiement:
stage: construction
image: docker:latest
before_script:
- docker version
script:
- echo "test"

如何配置我的runner以执行docker命令?我的跑步者设置是否错误

谢谢你的回答!

根据@Dr Claw和@vpalmerini的评论,有必要将docker.sock添加到卷中,并删除变量和服务。请参阅此线程。

我的.gitlab-ci.yml:

variables:
DOCKER_DRIVER: overlay2
before_script:
- df
- cat /etc/resolv.conf
- cat /etc/hosts
deploiement:
image: docker:latest
before_script:
- docker version
script:
- docker info

我的config.toml:

[[runners]]
name = "Synology premier runner"
url = "http://my.domain.com:8484/"
token = "1UsxGPQmxht6zHPb_y2b"
executor = "docker"
clone_url = "http://my.domain.com:8484/"
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[runners.docker]
tls_verify = false
image = "node:lts-alpine"
privileged = true
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
shm_size = 0

非常感谢你的回答@Dr Claw和@vpalmerini!

最新更新