Dockerでエラー「dial unix /var/run/docker.sock: connect: permission denied.」
Dockerの立ち上げに関しては、
- Dockerfileというファイルを作成する
- ビルドしてDockerイメージを作成する
- Dockerイメージからコンテナを作成する
- コンテナに接続してログインする
という手順を行って、
上記をやってみたあとに、
- Dockerのイメージの確認
- Dockerのコンテナの確認
- Dockerのコンテナの停止と削除
などを行っていました。
この辺りは、
コマンドで実行したことがあるので、
その辺りは、
【簡易サンプル】Dockerの基本的な手順とコマンドサンプル
こちらを参考にしてください。
今回は、
docker-compose
を使っているのですが、
特定のサーバーで環境を構築するために、
コマンドを実行したところエラーになりました。
その時の対応を、
自分の備忘録として、
忘れないうちにメモを残しておきます。
エラー内容
docker-composeを使ってビルドをしていましたが、
エラーになっているので、
そもそも、
Docker自体が動いているのかを確認してみました。
実行コマンド
docker ps
エラー内容
Got permission denied
while trying to connect to the Docker daemon socket
at unix:///var/run/docker.sock:
Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json":
dial unix /var/run/docker.sock: connect: permission denied
ということで、
Docker自体が正しく挙動していませんでした。
最終的な対応方法
いくか設定を変更したりしていましたが、
結論として、
権限を調整して、Dockerを再起動
を行うことで解決しました。
権限を調整
sudo usermod -aG docker $USER
こちらで、
現在のユーザーをdockerグループに追加しています。
Dockerの再起動
sudo systemctl restart docker
こちらで、
先ほどの設定を反映するために、
Dockerのデーモンを再起動します。
もし、
SSHなどで接続している場合は、
現在のシェルに反映するためには、
- 現在のシェルに反映させるためにコマンドで対応
- 一度、ログアウトして、再度、SSHで接続
のどちらかが必要です。
直接、
現在のシェルに反映させるには、
以下のコマンドが必要です。
現在のシェルに反映させるコマンド
newgrp docker
ここまでの対応を行うことで、
エラー自体が解決できました。
実際に、
docker ps
のコマンドで確認したところ、
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
このように、
うまくDocker自体が挙動しましたので、
無事に解決できました。
スキルを使って、就職/転職/副業する時のサイト
プログラミングのスキルなどを、自分なりに高めた上で、
自分のスキルをアピールして就職や転職を行い、年収をあげるか、
副業という形で、年収にプラスアルファの稼ぎを増やすことはできます。
まずはできる範囲で取り組むことで、
少しずつ、経験値も増え、自分のスキルが収入につながるのでおすすめです。