Jérémy
Jérémy

Reputation: 423

How to setup gitlab-runner to run docker command into gitlab-ci?

I try to configure gitlab runner in order to uses docker command into my .gitlab-ci.yml file.

I have run 2 containers to do that :

I have set my registered runner with privilege mode :

[[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

My pipeline work fine to build and run tests. Now i want to build nginx docker container with my node builded files.

When i just run docker version command, there was an error :

$ 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

Maybe it's an error into my .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"

How can i configure my runner to execute docker commands ? Is my runner setup wrong ?

Thanks for your answers !

Upvotes: 0

Views: 4554

Answers (1)

Jérémy
Jérémy

Reputation: 423

According to @Dr Claw and @vpalmerini comments, it necessary to add docker.sock into volume and remove variables and service. See this thread.

My .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

My 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

Thanks you very much for your answers @Dr Claw and @vpalmerini !

Upvotes: 2

Related Questions