自分が体験した Docker エラー集
はじめに
どうも、最近Dockerを完全に理解したpizaです。
一通りの操作に慣れるまでに遭遇したエラーたちを備忘録としてまとめてみました。実は、発見したエラーの殆どがスペルミスだったのですが、、、
それはそうと、これらの発生要因について自分なりに読み解いてみました。どなたかのお役に立てれば幸いです。
この記事では、Docker 24.0.6のバージョンを使用しています。また、一部エラー文は{}
や~~
で置き換えを行っています。
エラー集
1. パーミッションエラー
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post ~~ : dial unix /var/run/docker.sock: connect: permission denied.
概要
初期動作確認でsudo を付けてDockerを実行しようとしたときに検出された。Dockerを実行するには権限がないというエラー文。
解決方法
$ sudo groupadd docker
$ sudo usermod -aG docker $USER
$ newgrp docker
$ docker run hello-world
本来の解決方法と違うかもしれないが、Dockerの権限をユーザに与えてみた。
まず、Dockerのユーザグループを作り、ユーザをDockerグループに追加する。次に、newgrpコマンドで変更内容を反映。最後に、 docker run hello-world
で動作確認。
sudo service docker restart
では反映されなかった。
2. プロパティエラー
validating {docker-compose.yml}: Additional property {service} is not allowed
発生箇所
service:
app:
db:
概要
プロパティの追加が何かしらの原因で出来なかった状態。キーが足りないとき、間違っているときに表示される。
解決方法
services:
app:
db:
今回はスペルミスだったので「service」⇒「services」に修正して解決。
Composeのservices
はコンテナを定義する上で必要不可欠なものである。
参考 : https://github.com/compose-spec/compose-spec/blob/master/spec.md#services-top-level-element)
version
は下位互換性のため、Compose 仕様に定義されている。ほとんどは単なる情報(=コメント)として扱われる。
3. 構文エラー
line 24: mapping key "type" already defined at line 21
line 25: mapping key "source" already defined at line 22
line 26: mapping key "target" already defined at line 23
発生箇所
volumes:
type: bind
source: ./docker/db/init.sql
target: /docker-entrypoint-initdb.d/init.sql
概要
type
やsource
がvolumes
の同列のキーとして認識されてしまっている。インデントが正しくないときにも表示される。
解決方法
volumes:
- type: bind
source: ./docker/db/init.sql
target: /docker-entrypoint-initdb.d/init.sql
--volume docker-practice-db-volume:/var/lib/mysql
はリスト要素の一つなので「-」をtype
の前に追加し、インデントを整えた。
最後に
Dockerの学習に特におすすめなのが、「実践 Docker - ソフトウェアエンジニアの「Docker よくわからない」を終わりにする本」 です。私がDockerに対して感じていた苦手意識を克服させてくれた本なので「Dockerが難しそうだから触れない、、、」と悩んでいる方に強くおすすめします!!是非、読んでみてください!!
それでは、お互い楽しい Docker Life を過ごしましょう!
最後までお読みいただき誠にありがとうございました。