PC再起動時に毎回コンテナが立ち上がっていちいち止めていたのを直した話です
結論
docker-compose.yml の restart: always
になっている部分を消しましょう。
確認法
下記コマンドで restart: always で設定されているコンテナ名がわかります
docker inspect -f "{{.Name}} {{.HostConfig.RestartPolicy.Name}}" $(docker ps -aq) | grep always
# => /コンテナ名 always
# 上記の形式で出力される。
コマンド内容補足
docker inspect $INSPECT_ID
# => jsonで出力される。引数でIDを指定したコンテナの情報を表示。
docker ps -aq
# => 全てのコンテナの整数値のIDを出力
# オプション -a: 全てのコンテナを表示 (デフォルトは実行中コンテナのみ表示)
# オプション -q: 整数値の ID のみ表示
docker inspect -f "{{.Name}} {{.HostConfig.RestartPolicy.Name}}"
# オプション -f: 指定する go テンプレートを使い、出力を整形
goテンプレートに関しては下記参照
上記例だと、 docker inspect
へ出力されるjsonの要素に .
つなぎでキーを指定して取得している。
go全然わからないのですが、 range
を使うと for文
みたいなことができるようで、
docker inspect -format='{{range .Config.Env}}{{println .}}{{end}}' $INSPECT_ID
のようにすると、json のConfigキーの中のEnvキーの値が配列なので、配列の要素1つ1つに対して println
してるみたいな感じ。
対応
手順1
restart: always
なコンテナを探す
docker inspect -f "{{.Name}} {{.HostConfig.RestartPolicy.Name}}" $(docker ps -aq) | grep always
手順2
確認するコマンドで出てきたコンテナを作成している docker-compose.yml
の restart: always
の部分を消す。
手順3
コンテナを立ち上げ直す
docker compose down
、 docker compose up -d
。
手順4
手順1に戻りまだ該当のコンテナがあれば同様の手順を繰り返す。
まとめ
PC再起動時にコンテナが勝手に立ち上がらないようにしました。
調べたらすぐにわかることなのに他にやるべきことがあると理解を後回しにしてしまうのは悪い癖