0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

再起動時に勝手に立ち上がるコンテナを止めたい

Posted at

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.ymlrestart: always の部分を消す。

手順3

コンテナを立ち上げ直す
docker compose downdocker compose up -d

手順4

手順1に戻りまだ該当のコンテナがあれば同様の手順を繰り返す。

まとめ

PC再起動時にコンテナが勝手に立ち上がらないようにしました。
調べたらすぐにわかることなのに他にやるべきことがあると理解を後回しにしてしまうのは悪い癖

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?