修正:Dockerデーモンに接続できない



問題を排除するために楽器を試してください

Linuxターミナルが「Dockerデーモンに接続できません」というエラーをスローしていると、非常に混乱する可能性があります。これは、Dockerデーモンがすでに実行されている可能性が高いためです。確実に実行する必要がありますが、このエラーがサービスが開始されていないこととは関係がないことがわかった場合は、おそらく戸惑うでしょう。ほとんどの場合、Dockerグループに自分自身を追加していないユーザーにスローされます。



DockerはLinuxシステムで別のユーザーグループを発行し、Dockerに追加されていないユーザーアカウントを持っているユーザーはそれに接続できません。デーモンは常にrootユーザーとして実行されているため、Dockerグループにユーザーアカウントを追加することは、機能的にはrootと同等であることに注意してください。これはシングルユーザーのUbuntuServerシステムで予想されるかもしれませんが、Arch、Fedora、またはDebianでDockerを実行している人にとっては確かに覚えておくべきことです。



方法1:Dockerサービスのステータスを確認する

ほぼ確実ですが、Dockerサービスが現在実行されているかどうかを確認する必要があります。ターミナルウィンドウで、 systemctl status docker.service 通常のユーザーとして。 Dockerのデーモンに割り当てられたPID番号に関する情報を取得する必要があります。そうでない場合は、サービスを再起動する必要があります。



再起動した場合は、「Dockerデーモンに接続できません」というエラーが表示された場合は何でも実行してみてください。これで機能する場合は、サービスが実行されていないだけであり、実行されなかった理由以外に何も心配する必要はありません。残念ながら、これはほとんどの場合機能しないため、そのような状況では先に進む必要があります。

方法2:Dockerグループにユーザーを追加する

実行 Docker情報 コマンドラインから、通常は「Dockerデーモンに接続できません」というエラーが再度表示されます。

この場合は、実行する必要があります sudo groupadd docker; sudo usermod -aG docker $ USER 適切なグループに自分を追加します。 usermodがないためにエラーが発生した場合は、コマンドを変更して次のように実行できます。 sudo groupadd docker; sudo gpasswd -a $ USER docker 、ただし、ほとんどの商用グレードのLinuxディストリビューションは同じツールセットで動作しているため、これは通常問題にはなりません。いずれにせよ、実行 newgrp docker そのため、まだログインしていない場合は、新しいDockerグループにログインできます。



これにより、現在ログインしているユーザーが常に追加されることに注意してください。これは、1人のユーザーとrootアカウント以外に複数のアカウントを持っていないほとんどの人のシステムではそれほど問題にはならないはずです。とりあえず管理アクセスが入力されているので、 sudo chgrp docker / usr / bin docker; sudo chgrp docker /var/run/docker.sock Dockerソケットとコマンドの権限を修正します。通常、ソケットファイルはrootユーザーのみに属するため、これで修正されます。

実行後は、前のコマンドで作成したのと同じグループに属しているため、問題はありません。ただし、dockerがsudoなしで実行されることを確認するためにテストする必要があるので、次のように入力します。 docker runhello-world 通常のユーザーとして、他のエラーが発生していないことを確認します。

この時点では、まだほとんどのユーザーが何らかのエラーメッセージを受信して​​いません。この時点でほとんどの問題を修正する必要がありますが、それでも問題が解決しない場合は、完全にログアウトすることをお勧めします。別のターミナルエミュレータウィンドウを開いてみてください。ただし、これが機能しない場合は、システムを停止して完全に再起動すると、それが可能であれば役立つ場合があります。

方法3:ACLを使用してDockerメタデータを変更する

rootユーザーのようになるグループに所属したくない場合は、特定の権限でのみ機能するようにソケットファイルを設定できます。この方法で実行したい場合は、gpasswdプロセスを無視できます。セキュリティ監査を行う人にとって負担となるさまざまなACLエントリについてファイルシステムをスキャンする必要がありますが、Dockerグループを完全に使用する必要がなくなります。

この方法で実行したい場合は、実行できます sudo setfacl -m user:name:rw /var/run/docker.sock ユーザーと名前を適切なラベルに置き換えます。これにより、/ var / run / docker.sockにあるDockerソケットにアクセスするためのアクセス許可が付与されます。これは、DebianおよびUbuntuサーバーで機能するはずです。

読んだ3分