コンテナライフサイクル管理
Dockerコンテナの完全なライフサイクルを管理:作成、起動、停止、再起動、一時停止、再開、削除。再起動ポリシーとグレースフルシャットダウンを学びます。
Container Lifecycle
詳細な説明
コンテナのライフサイクル
Dockerコンテナは作成済み、実行中、一時停止、停止、削除といった複数の状態を経ます。このライフサイクルの理解がコンテナ管理の鍵です。
起動と停止
# 実行中のコンテナを停止(SIGTERMを送信、10秒後にSIGKILL)
docker stop my-app
# カスタムタイムアウトで停止(グレースフルシャットダウンに30秒)
docker stop -t 30 my-app
# 停止したコンテナを起動
docker start my-app
# 再起動(停止+起動)
docker restart my-app
再起動ポリシー
再起動ポリシーはコンテナがクラッシュした時やDockerデーモンが再起動した時の動作を決定します:
# 常に再起動(デーモン再起動後も)
docker run -d --restart=always my-app
# 失敗時に最大5回再試行
docker run -d --restart=on-failure:5 my-app
# 手動停止しない限り再起動
docker run -d --restart=unless-stopped my-app
バッチ操作
すべての実行中コンテナを停止:
docker stop $(docker ps -q)
すべての停止済みコンテナを削除:
docker container prune -f
一時停止と再開
一時停止はcgroupsを使用してコンテナ内のすべてのプロセスをフリーズし、終了させません:
docker pause my-app
docker unpause my-app
コンテナの状態を失わずに一時的にリソースを解放する必要がある場合に便利です。
ユースケース
グレースフルシャットダウンが必要な本番サービスの管理、フォールトトレラントなデプロイメントの再起動ポリシー設定、メンテナンスウィンドウ中のバッチコンテナ操作。