Configuration du Runner
On utilise privileged = true
plutôt que le montage de la socket /var/run/docker.sock
pour les raisons expliquées dans le post suivant :
https://applatix.com/case-docker-docker-kubernetes-part-2/
Contenu du fichier /etc/gitlab-runner/config.toml
:
concurrent = 1
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "Mon runner"
url = "https://gitlab.example.com"
token = "**********************"
executor = "docker"
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[runners.docker]
tls_verify = false
image = "docker:20"
privileged = true
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache"]
shm_size = 0
Utilisation dans un job Gitlab-CI
Avec certaines version de l’image docker:dind
on peut obtenir le message d’erreur suivant :
Cannot connect to the Docker daemon at tcp://docker:2375. Is the docker daemon running?
La raison de cette erreur est bien expliqué dans ce post :
https://gitlab.com/gitlab-org/gitlab-runner/-/issues/27300#note_466755332
Il faut donc configurer le job de la manière suivante :
dind-test:
stage: dind
image: docker:20.10
services:
- name: docker:20.10-dind
# explicitly disable tls to avoid docker startup interruption
command: [ "--tls=false" ]
variables:
# Docker daemon is exposed by a service with no TLS.
DOCKER_HOST: "tcp://docker:2375"
# Instruct Docker not to start over TLS.
DOCKER_TLS_CERTDIR: ""
# Improve performance with overlay fs.
DOCKER_DRIVER: overlay2
before_script:
# logging in into Docker Registry on GitLab using GitLab CI/CD variables
- echo -n $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY
after_script:
- docker logout $CI_REGISTRY
script:
- docker info