コンテナのライフサイクル管理
Docker を効果的に使用するには、コンテナのライフサイクルを管理する方法を理解することが重要です。このステップでは、コンテナの状態を制御し、コンテナのライフサイクルを理解するためのさまざまなコマンドを調べていきます。
コンテナのライフサイクル状態
Docker コンテナは、いくつかの状態で存在できます。
- Created (作成済み): コンテナは作成されていますが、起動されていません
- Running (実行中): コンテナは現在実行中です
- Paused (一時停止): コンテナの実行が一時停止しています
- Stopped (停止済み): コンテナは停止していますが、まだ存在しています
- Removed (削除済み): コンテナは削除されました
これらの状態間の移行方法を調べてみましょう。
起動せずにコンテナを作成する
create コマンドを使用して、起動せずにコンテナを作成できます。
docker create --name test-container nginx
これにより、コンテナが作成されますが、起動されません。その状態を確認します。
docker ps -a
新しいコンテナが「Created (作成済み)」ステータスで表示されるはずです。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3f4ab92d1234 nginx "/docker-entrypoint.…" 5 seconds ago Created test-container
a72369167c21 nginx "/docker-entrypoint.…" 40 minutes ago Up 30 minutes 0.0.0.0:8080->80/tcp my-nginx
bc123def456a redis "docker-entrypoint.s…" 10 minutes ago Up 10 minutes 6379/tcp redis-server
作成されたコンテナの起動
作成されたコンテナを起動するには、次のようにします。
docker start test-container
実行されていることを確認します。
docker ps
コンテナの一時停止と一時停止解除
Docker では、コンテナを一時停止できます。これにより、コンテナ内のすべてのプロセスがフリーズします。
docker pause test-container
その状態を確認します。
docker ps
出力:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3f4ab92d1234 nginx "/docker-entrypoint.…" 2 minutes ago Up 1 minute (Paused) test-container
a72369167c21 nginx "/docker-entrypoint.…" 42 minutes ago Up 32 minutes 0.0.0.0:8080->80/tcp my-nginx
bc123def456a redis "docker-entrypoint.s…" 12 minutes ago Up 12 minutes 6379/tcp redis-server
コンテナを再開するには、次のようにします。
docker unpause test-container
再び実行されていることを確認します。
docker ps
コンテナの停止と再起動
コンテナを正常に停止するには (SIGTERM を送信し、猶予期間後に SIGKILL を送信します)。
docker stop test-container
コンテナを強制的に停止するには (SIGKILL を送信します)。
docker start test-container ## まず起動します
docker kill test-container ## 次に停止します
コンテナを再起動するには (停止して再度起動します)。
docker start test-container ## まず起動します
docker restart test-container
コンテナの削除
停止したコンテナを削除するには、次のようにします。
docker stop test-container ## まず停止していることを確認します
docker rm test-container
削除されたことを確認します。
docker ps -a | grep test-container
出力が得られないはずです。これは、コンテナが削除されたことを示しています。
実行中のコンテナの削除
実行中のコンテナを強制的に削除できます。
docker run --name temp-container -d nginx
docker rm -f temp-container
コンテナの再起動ポリシー
Docker では、コンテナの再起動ポリシーを設定できます。
docker run --name always-restart --restart always -d nginx
このコンテナは、終了した場合、または Docker が再起動した場合に自動的に再起動します。
再起動ポリシーを確認します。
docker inspect --format='{{.HostConfig.RestartPolicy.Name}}' always-restart
出力:
always
このコンテナを停止して削除しましょう。
docker rm -f always-restart
これらのライフサイクルコマンドを理解することで、Docker コンテナを完全に制御し、アプリケーションのニーズに基づいて状態を効率的に管理できます。