コンテナの再起動ポリシーの設定
Docker では、コンテナの再起動ポリシーを設定できます。再起動ポリシーは、コンテナが終了した後、Docker デーモンによって自動的に再起動されるかどうかを決定します。これは、アプリケーションの可用性を確保するための重要な機能です。
このステップでは、Docker コンテナの再起動ポリシーを設定する方法を学びます。
まず、以前の my-nginx
コンテナを停止して削除し、新たに開始しましょう。
docker stop my-nginx
docker rm my-nginx
次に、再起動ポリシー always
を指定して、新しい Nginx コンテナを実行します。
docker run -d --name my-nginx-always --restart=always -p 80:80 nginx
--restart=always
フラグは、終了コードに関係なく、コンテナが停止した場合に常にコンテナを再起動するように Docker に指示します。また、Docker デーモンが起動したときにもコンテナを再起動します。
コンテナが実行されていることを確認します。
docker ps
次に、手動で停止してコンテナの障害をシミュレートしましょう。
docker stop my-nginx-always
数秒待ってから、コンテナのステータスを再度確認します。
docker ps
my-nginx-always
コンテナが Docker デーモンによって自動的に再起動されたことが表示されるはずです。STATUS
列には、短時間 Up
になっていることが示されます。
その他の一般的な再起動ポリシーには、次のものがあります。
no
: コンテナを自動的に再起動しません (デフォルト)。
on-failure
: コンテナがゼロ以外の終了コードで終了した場合にのみ、コンテナを再起動します (エラーを示します)。オプションで、再試行の最大回数を指定できます (例:on-failure:5
)。
unless-stopped
: ユーザーによって明示的に停止されるか、Docker デーモンが停止されない限り、常にコンテナを再起動します。
on-failure
ポリシーを試してみましょう。現在のコンテナを停止して削除します。
docker stop my-nginx-always
docker rm my-nginx-always
on-failure
ポリシーを使用して新しいコンテナを実行します。
docker run -d --name my-nginx-on-failure --restart=on-failure -p 80:80 nginx
実行されていることを確認します。
docker ps
次に、障害をシミュレートしましょう。これを行うには、ゼロ以外のステータスで終了するコマンドをコンテナ内で実行します。
docker exec my-nginx-on-failure sh -c "exit 1"
数秒後にコンテナのステータスを確認します。
docker ps
コンテナはゼロ以外のステータスで終了したため、自動的に再起動されたはずです。
再起動ポリシーは、コンテナ化されたアプリケーションの回復力を確保するための強力なツールです。適切なポリシーを設定することで、予期せず停止したコンテナの回復を自動化できます。