事象
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