「Docker デーモンに接続できません」エラーを迅速に解決する
Docker を実行しようとしたときに、突然「Docker デーモンに接続できません」というメッセージが表示されたことはありますか? ”エラー?これは、開始する前に作業を中断してしまう可能性がある最もイライラする問題の 1 つです。 Docker デーモンはバックグラウンドで静かに実行され、コンテナーの開始と停止からイメージの管理、レイヤーの構築、docker run などのすべての Docker コマンドの処理まで、すべてを処理します。 、docker ps など。端末がアクセスできない場合は何も機能しません。
このガイドでは、このエラーが発生する理由を説明し、Docker を再びスムーズに実行するための簡単で実践的な修正方法を示します。
目次
Docker デーモンの動作を理解する
Docker デーモン (dockerd) は、コンテナー、イメージ、ネットワーク、ストレージの管理を担当するバックグラウンド サービスです。 Docker コマンドを実行する場合、CLI 自体はこれらのタスクを実行しません。代わりに、リクエストをデーモンに送信します。 Linux システムでは、この通信は「/var/run/docker.sock」にある Unix ソケットを通じて行われます。 Docker デスクトップまたは WSL 環境では、CLI は名前付きパイプまたは仮想マシンによって管理されるソケットを介してデーモンと通信します。
CLI がデーモンと通信できない場合は、「unix:///var/run/docker.sock で Docker デーモンに接続できません。Docker デーモンは実行されていますか?」のようなエラーが表示されます。 ”。
多くの場合、次のいずれかの理由で発生します。
- Docker サービスが実行されていません。
- ユーザーには Docker ソケットにアクセスする権限がありません。
- Docker が間違ったコンテキストを使用しています。
- Docker ソケットが見つからないか、権限が正しくありません。
DOCKER_HOSTのような環境変数 設定が間違っています。- プラットフォーム固有の問題 (Docker デスクトップ、WSL、またはリモート デーモン)。
この通信チェーンのどの部分が壊れているかを特定することが、問題を正しく解決する鍵となります。
ユーザー権限を確認してください
Linux システムでは、Docker は root ユーザーが所有する Unix ソケットを介して通信します。 sudo を使用せずに Docker グループにアクセスできるようにするには、ユーザーが Docker グループに属している必要があります。 .
ソケットの権限を確認するには、次のコマンドを実行します。
ls -l /var/run/docker.sock
この出力は、ソケットが root によって所有されており、docker グループに属するユーザーのみがソケットに対する読み取りまたは書き込みを許可されていることを示しています。ユーザー アカウントがこのグループに属していない場合、Docker はアクセスを拒否し、コマンドの実行に失敗します。この問題を解決するには、ユーザーを Docker グループに追加する必要があります。
sudo usermod -aG docker $USER Docker グループが存在しない場合は、次のコマンドを使用して作成できます。
sudo groupadd docker Docker サービスが実行されていることを確認する
もう 1 つの非常に単純だが重要な問題は、Docker がまったく実行されていない可能性があることです。 Docker デーモンが停止している場合、Docker CLI には接続するものが何もないため、上記のエラーが発生します。 Docker サービスの現在のステータスを確認するには、次のコマンドを実行します。
systemctl status docker この場合、Docker はアクティブで、正常に実行されています。ただし、出力に非アクティブ (デッド) または失敗などの状態が示されている場合は、Docker サービスが実行されていないことを意味します。
Docker を手動で起動するには、次のコマンドを実行します。
sudo systemctl start docker システムが起動するたびに Docker が自動的に起動するようにするには、次のコマンドを使用して有効にします。
sudo systemctl enable docker Docker デーモンを手動で起動する (dockerd)
最小限のサーバーまたはカスタム Linux セットアップでは、Docker が systemd によって管理されない場合があります。これらの環境では、Docker がインストールされていても、Docker デーモンが自動的に起動しない可能性があります。デーモンが開始できるかどうかをテストするには、デーモンを手動で実行してみてください。
sudo dockerd 出力を注意深く監視してください。何か問題が発生した場合、Docker は通常、ストレージ ドライバーの問題、権限エラー、ネットワークの競合など、問題を説明する明確なエラー メッセージを出力します。
Docker Unix ソケットを検査して修正する
Docker CLI は、Unix ソケットを使用して Docker デーモンと対話します。このソケットが見つからないか、破損しているか、または不正な権限が設定されている場合、Docker は接続できません。次のコマンドを使用して、ソケットが存在するかどうかを確認できます。
ls /var/run/docker.sock
ファイルが見つからない場合は、通常、Docker デーモンが実行されていないか、Docker が起動時にソケットの作成に失敗したことを意味します。その場合、Docker を再起動して再作成する必要があります。
sudo systemctl restart docker ソケットは存在するが、権限が正しくない場合は、次のコマンドを使用して修正します。
sudo chown root:docker /var/run/docker.sock
sudo chmod 660 /var/run/docker.sock
Docker コンテキストと環境変数を確認する
場合によっては、Docker が間違ったエンドポイントを指しているためにデーモンに接続できないことがあります。これは、DOCKER_HOST の場合に発生する可能性があります。 環境変数が正しく設定されていない場合、またはアクティブな Docker コンテキストがリモートまたは使用できない環境を指している場合。
環境変数を確認する
次のコマンドを実行して、Docker 関連の環境変数が設定されているかどうかを確認します。
env | grep DOCKER
DOCKER_HOST=tcp://localhost:2375 のようなものが表示された場合 、これは、Docker が非アクティブまたは欠落している可能性のあるリモート デーモンを指していることを意味します。変数の設定を解除することで、この問題を一時的に修正できます。
unset DOCKER_HOST これを完全に削除するには、「~/.bashrc」、「~/.zshrc」、「/etc/environment」などのシェル設定ファイルから削除します。
アクティブな Docker コンテキストを確認する
Docker コンテキストによって、CLI がどのデーモンと通信するかが決まります。使用可能なコンテキストをリストし、アクティブなコンテキストを確認できます。
docker context ls
アスタリスク (*) は、現在アクティブなコンテキストを示します。コンテキストが使用できない環境を指している場合は、デフォルトのローカル デーモンに切り替えます。
docker context use default プラットフォーム固有の問題
一部の接続問題は、特定のプラットフォームでのみ発生します。たとえば、Windows または macOS 上の Docker Desktop は、軽量 VM 内でデーモンを実行します。 VM の起動に失敗すると、Docker CLI は接続できません。この問題を解決するには、Docker デスクトップを再起動します。
同様に、WSL で Docker を使用する場合、デーモンは Linux 環境で実行されます。 WSL が適切にインストールされ、実行されていることを確認してください。
wsl --list --running
WSL から Docker デーモンにアクセスできない場合は、Docker デスクトップ サービスまたは特定の WSL ディストリビューションを再起動すると問題が解決することがよくあります。
今後このエラーを回避するためのヒント
今後「Docker デーモンに接続できません」エラーを回避するには、特にシステム更新後は常に Docker サービスが実行されていることを確認し、sudo の使用をスキップするようにユーザーを Docker グループに追加してください。 。特にマシン、WSL ディストリビューションを切り替えた後、または Docker デスクトップを使用した後は、アクティブな Docker コンテキストを定期的に確認し、変数の設定が間違っていると CLI コマンドが誤って送信される可能性があるため、特定のリモート デーモンに接続する場合を除き、DOCKER_HOST を設定しないでください。さらに、journalctl -u docker.service を使用してデーモン ログを監視します。 問題を早期に発見するため。
-
毎日使用している Linux ディストリビューション ドライバーを再度交換しました - そしてそれは安定しています:私の信頼できる選択
2026 年 3 月 5 日、午後 4 時 (東部標準時間) に公開 Roine Bertelson は、ストックホルムを拠点とするテック ライター、翻訳者、デジタル ストラテジストであり、AI ツール、Linux、コンシューマー テクノロジー、サイバーセキュリティ、SEO 主導のコンテンツに関して 20 年以上の実践経験があります。彼は、複雑なトピックを、読者が実際の問題を解決するのに役立つ明確で実践的なガイダンスに変えることで知られています。人々が彼の作品を信頼しているのは、彼が記事にしているツールを実際に使用してテストし、意図的に物事を破壊し、現代テクノロジーの混乱を人間的で誠実で役
-
Ubuntu の「おやすみモード」を有効にして集中力を強化する
2023 年 9 月 21 日、午前 9 時 45 分 EDT に公開 Mwiza はソフトウェア開発を職業としており、2019 年から Linux とフロントエンド プログラミングに関する執筆を幅広く行っています。彼は情報システムの修士号を取得しており、認定 C# 開発者でもあります。彼の興味には、歴史、経済、政治、企業アーキテクチャなどがあります。 Ubuntu はユーザーフレンドリーで、エンターテイメントや仕事のニーズに応える機能がたくさん備わっています。生産性と集中力をサポートするために、Ubuntu には邪魔を最小限に抑えて目の前の作業に集中できる「おやすみモード」機能が備わ