事象
GitLabのCICDパイプラインでDockerコマンド(DinD)を実行しようとすると、次のエラーが出てしまう。
エラー内容
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
解決策
下記の設定について確認してください。
- GitLab Runnerの
config.toml
の設定privileged = true
になっていること
.gitlab-ci.yml
の設定DOCKER_HOST
の設定
GitLab Runnerのconfig.tomlの設定
GitLab Runnerのconfig.toml
の設定を確認します。次のように[runner.docker]
の箇所にprivileged = true
があるか確認し、ない場合は追加してください。
config.toml
concurrent = 1
check_interval = 0
shutdown_timeout = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "docker-runner"
url = "http://web:8090"
id = 1
token = "SBDBD1EzBxKzetsjXAYv"
token_obtained_at = 2023-09-28T16:07:16Z
token_expires_at = 0001-01-01T00:00:00Z
executor = "docker"
[runners.cache]
MaxUploadedArchiveSize = 0
[runners.docker]
tls_verify = false
image = "alpine"
privileged = true disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache"]
shm_size = 0
.gitlab-ci.ymlの設定
次のようにvariables
にDOCKER_HOST
やDOCKER_TLS_CERTDIR
を指定し、image
もdocker:dind
にしてdockerコマンドをscript
として追加します。
.gitlab-ci.yml
build:
tags:
- docker
stage: test
variables:
DOCKER_HOST: tcp://docker:2375
DOCKER_TLS_CERTDIR: ''
services:
- name: docker:dind image: docker:dind
script:
- docker run hello-world