Dockerデーモンは 'unix:///var/run/docker.sock' に接続できませんこれは通常、「docker run」や「docker ps」などのコマンドが動作しないことを意味します。その結果、Dockerコンテナを操作できなくなります。このエラーは、DockerクライアントがDockerデーモン(コンピューター上のすべてのDocker操作を処理する基盤プログラム)に接続できないために発生します。

Docker接続エラー

この問題の最も一般的な原因は、システム上でDockerサービスが実行されていないことです。その他の原因としては、Dockerソケットへのアクセスに必要な権限がない、Dockerのインストール方法に問題がある、あるいは「docker.sock」ファイル自体に問題があるなどが考えられます。

考えられる原因がわかったので、実用的な解決策に移りましょう。

1. systemctlを使用してDockerサービスを起動します。

まず最初に確認すべきことは、Dockerが実行中かどうかです。`systemctl`ツールを使用すると、システムサービスの起動と管理が可能です。Dockerがアクティブでない場合、DockerクライアントはメインのDockerプロセスと通信できず、このエラーが発生します。`systemctl start docker`コマンドを実行するとDockerサービスが起動し、単に非アクティブであれば問題が解決するはずです。

  1. ターミナルを開く まず、次のコマンドを実行して 非表示解除 ドッカー:
    sudo systemctl で docker のマスクを解除する

    マスクされた状態でDockerを起動しようとすると、「docker.serviceの起動に失敗しました: ユニットがマスクされています」というエラーが表示されます。マスクはサービスを停止するためのより強力な方法であり、サービスの起動を完全に阻止します。システム上のすべてのユニットファイルのステータスを確認したい場合は、[メソッド/ツール名]を使用してください。 systemctl ユニットファイル一覧.

  2. Dockerが 非表示解除、 してもいいです Dockerデーモンを起動する このコマンドを使用すると、Docker デーモンはイメージとコンテナを管理し、Docker API リクエストを処理するバックエンド サービスになります。
    sudo systemctl で docker を起動します

    Dockerサービスを開始する

  3. <XNUMXxDXNUMX>للل<XNUMXxXNUMX> Dockerが動作しているか確認するこのコマンドを入力してください。Dockerサービスの現在のステータスが表示されます。
    sudo systemctlステータスドッカー

    Dockerサービスのステータス

  4. 上の画像でわかるように、 Dockerはアクティブで動作しています.

2. 「Docker pull failed」をクリーンアップし、Dockerサービスを開始します。

Dockerのプルが失敗すると、不完全なファイルが残ってDockerデーモンの正常な起動を妨げることがあります。これらの残ったファイルを削除することで、Dockerは再起動できます。その後、Dockerサービスを再起動すると、スタックまたは破損したファイルによって発生する可能性のある問題を解決できます。

  1. 開いた 周辺 次のコマンドを入力します。
    sudo systemctl で docker.service のマスクを解除し、sudo systemctl で docker.socket のマスクを解除し、sudo systemctl で docker.service を起動します。

Dockerサービスを開始する

これらのコマンドを実行してもエラーが続く場合は、 削除 ディレクトリ内の残りのファイル コンテナ入りその後、Dockerをもう一度起動してみてください。バージョン1.11でDockerの一部となったContainerdは、Dockerコンテナをバックグラウンドから直接管理するのに役立ちます。

  • ターミナルで次のコマンドを実行します。 ルートユーザーのパスワード:
    sudo su サービス docker 停止 cd /var/run/docker/libcontainerd rm -rf containerd/* rm -f docker-containerd.pid サービス docker 開始

Dockerサービスの再起動

3. Dockerd(Docker Daemon)サービスを直接起動する

Dockerdは、バックグラウンドで実行され、すべてのDockerタスクを処理するメイン(隠し)プログラムです。特にシステム上で`systemctl`コマンドが機能しない場合は、Dockerdを直接起動することで問題が解決する場合があります。

  1. 開いた ターミナル このコマンドを使用して、Docker デーモンを直接起動します。
    sudo dockerd

Dockerdを起動する

4. Serviceコマンドを使用してDockerを起動する

Dockerを手動で起動することで、サービスが確実に実行されているか確認できます。`sudo service docker start`コマンドを使用してDockerを起動できます。これは、システムの再起動後にDockerが自動的に起動しない場合に役立ちます。

  1. ターミナルを開いて次のコマンドを実行します:
    sudo サービス --status-all sudo サービス docker 開始

Dockerサービスを開始する

5. Snapを使ってDockerサービスを開始する

Snapを使用してDockerをインストールした場合は、Snapによって管理されているDockerサービスが動作していることを確認する必要があります。Snapでは、サービスを起動または接続する必要がある場合があります。Dockerデーモンが期待どおりに動作していることを確認するには、「sudo snap start docker」を使用してください。

  1. ターミナルを開いてこのコマンドを実行します Dockerを起動する:
    sudo スナップスタート docker

    Dockerを起動する

  2. Snap を使用して Docker が正しく起動したかどうかを確認するには、次のコマンドを使用します。
    sudo スナップサービス
  3. これにより、 現在稼働中のすべてのSnapサービスを一覧表示します:
    スナップサービス
  4. Dockerがまだ起動していない場合は、 docker:homeプラグインを接続する必ずしも自動的に接続されるとは限りません。その場合はDockerを再起動してください。
  5. ターミナルを開き、以下を実行します。
    sudo snap connect docker:home :home sudo snap start docker

    Dockerを起動する

6. ルート権限のないユーザーでDockerを起動する

このエラーは、「unix:///var/run/docker.sock」へのアクセス権限がない場合にも発生する可能性があります。Dockerホスト変数をエクスポートし、ポート2375経由のローカルネットワークインターフェースを使用することで、このエラーを一時的に回避できます。

  1. ターミナルを開いて次のコマンドを実行します:
    エクスポート DOCKER_HOST=tcp://localhost:2375

    Dockerホストのエクスポート

7. Dockerを再インストールする

Dockerのインストール方法に問題がある場合(ファイルの破損や設定の誤りなど)、Dockerデーモンが正常に動作しないことがあります。Dockerを再インストールすると、すべてがデフォルト状態に復元され、設定の誤りや競合によって発生した問題を解決できます。

  1. Docker を再インストールした後、次のコマンドを使用してサービスが実行されていることを確認します。
    sudo サービス docker 開始

    これにより Docker が起動し、プログラムがアクティブでないとき、特にコンピューターの再起動後や Docker が自動的に起動しない場合に問題が修正されることが多いです。

  2. Docker デーモンはすべてのコンテナとイメージを制御するため、それが実行中であることを確認すると、Docker クライアントとデーモン間の接続が復元され、サービスの停止や非アクティブによって発生したエラーを修正できます。