[修正]「unix:///var/run/docker.sock」でDockerデーモンに接続できない

以下に説明するコマンド。



注意: この方法は、APTパッケージマネージャーを使用してDockerをインストールしたユーザーに対してのみ機能します。経由でDockerをインストールした場合 スナップ 、 参照する 解決策5 未満。

  1. ターミナルを開く そして最初のコマンドを実行します– Dockerのマスクを解除する
sudo systemctl unmask docker

DockerがマスクされているときにDockerサービスを開始しようとすると、エラーが発生する可能性があります「docker.serviceの開始に失敗しました:ユニットがマスクされています。」マスクは、無効化のより堅牢なバージョンと見なすことができます。ユニットファイルがマスクされると、ユニットはにリンクされます‘dev / null。」コマンド– ‘を使用して、すべてのユニットファイルの状態を一覧表示できます。 $ systemctllist-unit-files '



2.Dockerユニットが マスクされていない 、 私たちはできる Dockerを起動します デーモン systemctlコマンドを使用します。ザ・ docker デーモン 画像、コンテナ、DockerAPIリクエストなどのDockerオブジェクトを管理します。コマンドラインで以下のコマンドを実行します。



systemctl start docker
Dockerサービスを開始します

Dockerサービスを開始します



3.へ 確認 Dockerサービスかどうか アクティブで実行中です 。を使用します systemctlステータス 特定のサービスの現在のステータスを表示するコマンド。ターミナルで以下のコマンドを実行します。

systemctl status docker
Dockerサービスのステータス

Dockerサービスのステータス

上の画像から、 Dockerはアクティブで実行中です



解決策2:「失敗したDockerプル」をクリーンアップしてDockerサービスを開始する

コンテナをプルしているときに、予期せずDockerを閉じる場合があります。そのような状況はマスクします docker.service そして docker .socket ファイル。 Docker.socketは、「/var/run/docker.sock 'Dockerデーモンとの通信に使用されます。私たちはする必要があります マスクを解除する 2つのユニットファイル–以前のdocker.serviceとdocker.daemon 続行します dockerを起動します。

  1. を起動します ターミナル を実行します コマンド 未満:
systemctl unmask docker.service systemctl unmask docker.socket systemctl start docker.service
Dockerサービスを開始します

Dockerサービスを開始します

以下のコマンドを実行してもエラーが発生する場合は、次の手順を実行する必要があります。 削除 内のファイル コンテナ Dockerを再起動する前のディレクトリ。 Containerdは、Docker 1.11で導入された機能であり、Dockerイメージのライフサイクルを管理するために使用されます。

2.ターミナルを開き、以下のコマンドを実行します。あなたが知っていることを確認してください rootパスワード コマンドを実行するには昇格された特権が必要になるためです。

sudo su service docker stop cd / var / run / docker / libcontainerd rm -rf containerd / * rm -f docker-containerd.pid service docker start
Dockerサービスを再起動します

Dockerサービスを再起動します

解決策3:Dockerd(Docker Daemon)サービスを開始する

Dockerdは、Docker APIをリッスンし、さまざまなDockerオブジェクトを管理するDockerデーモンです。 Dockerdは、コマンド ‘の代わりに使用できます。 $ systemctl start docker ‘これはDockerデーモンの起動にも使用されます。

  1. 開いた ターミナル そして dockerdを開始します 以下のコマンドを実行します。
sudo dockerd
dockerdを開始します

dockerdを開始します

解決策4:ServiceコマンドでDockerを起動する

を使用している場合 SysVinitシステム の場合、systemctlコマンドは機能しません。を使用する必要があります サービスコマンドDockerデーモンを起動します

  1. ターミナルを起動し、 実行する 以下のコマンド:
sudo service --status-all sudo service docker start
Dockerサービスを開始します

Dockerサービスを開始します

解決策5:スナップでDockerサービスを開始する

Dockerをインストールした場合 スナップパッケージマネージャー 、dockerデーモンを管理するにはsnapコマンドを使用する必要があります。

通常、Snapはサービスを自動的に管理します。ただし、このような状況では、手動による介入が必要になります。 snapコマンドで使用できる引数には、stop、start、restartなどがあります。この場合、startパラメーターを使用します。

  1. ターミナルを開き、以下のコマンドを実行して Dockerを起動します
sudoスナップスタートdocker
Dockerを起動します

Dockerを起動します

2.以下のコマンドを実行して 確認 かどうか Dockerサービスを開始しました。

sudoスナップサービス

それは リスト すべて実行中 スナップサービス

スナップサービス

スナップサービス

上記のコマンドが機能しない場合は、試してください docker:homeプラグを接続する デフォルトでは自動接続されていないためです。完了したら、 開始 インクルード Dockerサービス

3.ターミナルを起動し、以下のコマンドを実行します。

sudo snap connect docker:home:home sudo snap start docker
Dockerを起動します

Dockerを起動します

解決策6:ルートPを持たないユーザーのためにDockerを起動する rivileges

次の理由でエラーが発生することもあります 昇格された特権の欠如 また、ユーザーは「unix:///var/run/docker.sock」にアクセスできません。幸い、回避策があります。 DockerHost変数をポート2375を介してローカルホストにエクスポートします。

  1. ターミナルを開き、以下のコマンドを実行します。
DOCKER_HOST = tcp:// localhost:2375をエクスポートします
DockerHostをエクスポートします

Dockerホストのエクスポート

解決策7:Dockerを再インストールする

上記の解決策でエラーが解決しない場合は、インストールエラーが発生する可能性が高くなります。 LinuxシステムにDockerを正しくインストールするには、次の手順に従います。 Docker公式ウェブサイト 。

読んだ4分