[GitLab]CICDパイプラインで「Cannot connect Docker daemon at unix:///var/run/docker.sock」のエラーが出る

事象

GitLabのCICDパイプラインでDockerコマンド(DinD)を実行しようとすると、次のエラーが出てしまう。

エラー内容

docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.

Cannot connect to the Docker daemon...

解決策

下記の設定について確認してください。

  • 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の設定

次のようにvariablesDOCKER_HOSTDOCKER_TLS_CERTDIRを指定し、imagedocker: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

コメント

コメントを残す

マークダウン形式でコメントを入力できます。

アップロードファイルの最大サイズ: 512 MB。 画像, 音声, 動画, 文書, スプレッドシート, 対話型, テキスト, アーカイブ, コード, その他 をアップロードできます。 Youtube、Facebook、Twitter および他サービスへのリンクは自動的にコメント内に埋め込まれます。 ここにファイルをドロップ

プロフィール背景
Ryosuke
Ryosuke

ITエンジニア & 講師

クラウドネイティブやアーキテクチャ設計の講師として活動しながら、ITエンジニアのDXを推進するために新しい技術やベストプラクティスを常に学び、エンジニアの生産性と開発品質の向上に貢献することを目指しています。猫5匹飼っています。山奥のポツンと一軒家に住んでいて、事務所は海の近くです。