【问题标题】:How to setup gitlab-runner to run docker command into gitlab-ci?如何设置 gitlab-runner 以在 gitlab-ci 中运行 docker 命令?
【发布时间】:2021-01-03 18:48:40
【问题描述】:

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

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

  • 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

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

当我刚刚运行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"

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

感谢您的回答!

【问题讨论】:

  • 如果你添加volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]会发生什么。
  • 也许this thread 可以帮忙?

标签: docker gitlab-ci gitlab-ci-runner


【解决方案1】:

根据@Dr Claw@vpalmerini cmets,需要将docker.sock添加到volume中并移除变量和服务。见this thread

我的.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 的回答!

【讨论】:

  • 谢谢!你为我节省了几个小时!
猜你喜欢
  • 2020-06-28
  • 2021-09-17
  • 2022-06-10
  • 1970-01-01
  • 1970-01-01
  • 2019-05-13
  • 2022-08-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多