Docker は、コンテナー テクノロジーに基づく軽量の仮想化プラットフォームとして、さまざまなシナリオで広く使用されています。実稼働環境では、コンテナの高可用性と自動障害回復が非常に重要です。この記事では、Docker を使用してコンテナ障害の回復と自動再起動を行う方法を、具体的なコード例を含めて紹介します。
1. コンテナの自動再起動の設定
Docker では、コンテナ実行時に --restart オプションを使用することでコンテナの自動再起動機能を有効にすることができます。一般的なオプションは次のとおりです:
- no: 自動的に再起動しません。デフォルトのオプション;
- always: 常に自動的に再起動;
- on-failure: 0 以外のステータスによりコンテナが終了した場合にのみ自動的に再起動;
- unless-stopped: そうでない場合手動で停止しない場合は、常に自動的に再起動します。
以下は、--restart オプションを使用してコンテナーの自動再起動を有効にする例です:
docker run -d --restart always nginx
この例では、--restart オプションを使用してコンテナーの自動再起動を有効にします。たとえば、nginx という名前の Docker コンテナを起動し、 --restart オプションを使用して常に自動的に再起動するようにコンテナを構成しました。
--restart オプションは、コンテナが失敗して終了した場合にのみ有効になることに注意してください。コンテナーを手動で停止した場合、自動的には再起動されません。コンテナーを手動で停止した後でも自動再起動を有効にしたい場合は、unless-stopped オプションを使用できます。
2. コンテナ障害復旧の構成
Docker では、コンテナ障害復旧とは通常、Docker Swarm などのクラスター管理ツールを使用してコンテナーを自動的に再スケジュールし、サービスの可用性を確保することを指します。以下は、Docker Swarm で自動フェイルオーバーを構成する方法を示す例です:
- Docker Swarm クラスターを作成します:
docker swarm init
#クラスター内にサービスを作成します: -
docker service create --name nginx --replicas 3 nginx
この例では、 nginx という名前のサービスを作成し、その番号を設定しますコピー数を 3 にします。
サービスで障害回復を有効にします: -
docker service update --update-lay 10s --update-Parallelism 2 --update-failure-action restart nginx
ここでの --update-lay オプションは、更新操作間の遅延時間を指定します。 --update-Parallelism オプションは、各更新の同時インスタンスの数を指定します。 --update-failure-action オプションは、アクションを指定します。更新が失敗したときに取得するため、ここではコンテナーを再起動するように設定します。
障害回復機能は、Docker Swarm などのクラスター管理ツールを使用する場合にのみ有効であることに注意してください。 docker run コマンドを直接使用してコンテナーを起動する場合、コンテナーを自動的に再起動するには --restart オプションのみを使用できます。
3. コンテナー障害の回復と自動再起動のコード例
以下は、 --restart オプションとクラスター管理ツール (以下のようなクラスター管理ツール) を使用してコンテナー障害を実装する方法を示す完全なコード例です。 Docker Swarm. 回復および自動再起動機能:
docker-demo という名前の Docker Swarm クラスターを作成します: -
docker swarm init --advertise-addr 127.0.0.1
クラスター内に nginx という名前のサービスを作成し、そのレプリカの数を 3 に設定します。 -
docker service create --name nginx --replicas 3 nginx
サービスで障害回復を有効にします: -
docker service update --update-lay 10s --update-Parallelism 2 --update-failure-action restart nginx
一定時間待機した後、コンテナを手動で停止します: -
docker コンテナ停止
一定時間待機した後、ビューコンテナー 自動的に再起動されるかどうか: -
docker コンテナー lsコンテナーが自動的に再起動される場合、そのステータスは実行中である必要があります。 コンテナ障害の回復と自動再起動の具体的な実装方法は異なり、シナリオが異なれば実装する方法も異なることに注意してください。上記の例は参考用であり、具体的な実装は実際の状況に応じて調整する必要があります。 概要コンテナ障害の回復と自動再起動は、Docker コンテナの高可用性を確保するための重要な手段です。 Docker の自動再起動と障害回復機能を正しく構成することで、コンテナ障害によるサービスの中断時間を効果的に短縮できます。この記事では、 --restart オプションと Docker Swarm などのクラスター管理ツールを使用して、コンテナーの障害回復機能と自動再起動機能を実装する方法を説明し、具体的なコード例を示します。この記事が、Docker を使用する際の皆様のお役に立てれば幸いです。 以上がDocker を使用してコンテナ障害の回復と自動再起動を行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。