解決方法:VS Code Dev Containersでの「Cannot connect to the Docker daemon」エラー

beginner💻 VS Code2026-06-04| Linux (Ubuntu 22.04+, Debian, Fedora), WSL2 (Windows 10/11), VS Code(Dev Containers拡張機能使用)

Error Message

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
#docker#dev-containers#vscode#linux#wsl2

エラーの発生状況

.devcontainerの設定を終え、いよいよコードを書き始める準備が整いました。青い「Reopen in Container(コンテナーで再度開く)」ボタンをクリックし、スムーズに移行できることを期待します。しかし、進行状況バーが止まり、ターミナルのエラーによってビルドプロセスが突然終了してしまいます。

ログを詳しく見てみると、原因が判明します:

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

この問題は、UbuntuなどのLinuxディストリビューションや、WSL2を使用しているWindows開発者によく見られます。これは実質的に、VS Codeがローカルパイプ(Unixソケット)を介してDockerと通信しようとしているものの、接続が拒否されているか、パイプがロックされていることを意味します。

原因分析:なぜこのエラーが発生するのか?

通常、この問題は以下の3つの一般的な設定不備のいずれかに集約されます:

  • サービスがオフライン: Dockerのバックグラウンドプロセス(デーモン)がホストマシンで実行されていません。
  • 「ゲートキーパー」問題: ユーザーアカウントに/var/run/docker.sockへの読み書き権限がありません。デフォルトでは、このソケットの所有者はrootです。
  • WSL2ブリッジの失敗: Windowsにおいて、Docker Desktopが特定のWSL2 Linuxディストリビューションとエンジンを共有するように許可されていない可能性があります。

ステップ1:Dockerデーモンのステータスを確認する

複雑な権限の修正に取り掛かる前に、エンジンが実際に起動しているか確認しましょう。ターミナルで次のコマンドを実行します:

sudo systemctl status docker

出力にinactive (dead)と表示されている場合は、起動させる必要があります。以下のコマンドを使用してサービスを開始し、コンピュータの起動時に毎回自動的に実行されるように設定します:

sudo systemctl start docker
sudo systemctl enable docker

ステップ2:ユーザーをDockerグループに追加する

Linuxでは、Dockerの実行にroot権限が必要です。すべてのコマンドの先頭にsudoを付ける代わりに、dockerグループに参加するのが標準的な方法です。これにより、VS Codeがソケットにアクセスするために必要な「鍵」が得られます。

  • dockerグループがまだ存在しない場合は作成します:

sudo groupadd docker

  
  - 現在のユーザー(`$USER`)をこのグループに追加します:
    ```
sudo usermod -aG docker $USER
  • 重要: グループの変更は、アクティブなセッションには適用されません。OSからログアウトして再度ログインする必要があります。WSL2を使用している場合は、Windows PowerShellウィンドウでwsl --shutdownを実行して強制的にリセットしてください。

ログアウトせずに一時的な修正が必要ですか?その場合は、ターミナルでnewgrp dockerを実行してください。これはその特定のターミナルタブにのみ影響するため、VS Codeの安定性の面ではフルリスタートを行うのがベストです。

ステップ3:ソケットの権限を調整する(クイックワークアラウンド)

グループへの参加で問題がすぐに解決しない場合は、手動でソケットの権限を開放することができます。マルチユーザーシステムではセキュリティが若干低下しますが、ローカル開発環境では非常に効果的な修正方法です。

sudo chmod 666 /var/run/docker.sock

このコマンドは、すべてのユーザーに読み書きのアクセス権を付与します。システムのアップデートやDockerの再起動によって、このファイルの権限がデフォルトの660に戻ることがあるので注意してください。

ステップ4:WindowsでWSL2統合を設定する

Windowsユーザーの場合、Docker Desktopは実行されているものの、Linuxサブシステムと「通信」できていないときにこのエラーがよく発生します。

  • Docker Desktopのダッシュボードを開きます。
  • Settings(歯車アイコン) > Resources > WSL Integrationに移動します。
  • 「Enable integration with my default WSL distro」がオンになっていることを確認します。
  • リストから特定のディストリビューション(例:「Ubuntu-22.04」)を見つけ、スイッチをOnに切り替えます。
  • Apply & Restartをクリックします。

ステップ5:VS Codeのパス設定を確認する

まれに、VS Codeが間違ったディレクトリでDockerの実行ファイルを探していることがあります。設定(Ctrl + ,)を開き、docker.pathを検索してください。「Dev Containers: Docker Path」フィールドが空(デフォルトのdocker)であるか、Dockerバイナリの有効なパスを指していることを確認してください。

検証:修正を確認する

すべてが正常に動作していることを確認するために、新しいターミナルを開いて次を実行します:

docker ps

sudoを使わずに、CONTAINER IDIMAGEといったヘッダーを持つテーブルが表示されれば成功です。VS Codeに戻り、「Try Again」をクリックしてください。これでDev Containerがベースイメージをプルし、エラーなくビルドを開始するはずです。

Related Error Notes