Docker 内のイメージは自動的に更新されます。Watchtower ツールを使用して、イメージを自動的に更新できます。Watchtower は、実行中のコンテナー イメージが更新されたかどうかを監視できるツールです。イメージとリモート イメージを使用すると、現在のコンテナの実行パラメータを使用して新しいイメージで新しいコンテナを自動的に再作成し、古いコンテナを削除できます。
このチュートリアルの動作環境: linux7.3 システム、docker バージョン 19.03、Dell G3 コンピューター。
watchtower は、実行中のコンテナイメージが更新されたかどうかを監視できるツールで、ローカルイメージとリモートイメージに差異がある場合、現在のコンテナイメージが更新されます。パラメーターを実行して、新しいイメージを使用して新しいコンテナーを再作成し、古いコンテナーを削除します。
Docker を使用する場合、一部のイメージを頻繁に更新する必要がある場合があります。通常、コンテナーを手動で更新するのは面倒で、次の 4 つの手順が必要です:
1. コンテナーを停止します docker stop
2. コンテナーを削除 docker rm
3. イメージの更新ステータスを確認し、イメージを更新します docker pull
4. コンテナーを再起動しますdocker run ……
コンテナの数は少ない方が良いため、更新が必要なコンテナの数が多い場合、膨大な作業負荷が発生します。次に、コンテナを自動的に更新する方法を紹介します。この方法は、Synology の Docker にも適用できます。
Watchtower は、実行中のコンテナーを監視し、それらのコンテナーが最初に起動されたときのイメージを更新する必要があるかどうかを監視します。 Watchtower はイメージが変更されたことを検出すると、新しいイメージを使用し、同じパラメータを使用して対応するコンテナを自動的に再起動します。同時に、Watchtower 自体も Docker イメージとしてパッケージ化されており、Watchtower を使用して 1 行のコマンドですべてのコンテナを監視でき、Watchtower 自体を含むすべてのコンテナが自動的に更新されます。
クイック スタート
Watchtower 自体は Docker イメージとしてパッケージ化されているため、他のコンテナーと同じように実行できます。他の Docker 環境では、Docker コマンドを使用してダウンロードしますイメージを直接参照します。 :
docker pull containrrr/watchtower
Synology の Docker は、レジストリから直接検索してダウンロードできます:
その他の Docker 実行コマンド
docker run -d \ --name watchtower \ -v /var/run/docker.sock:/var/run/docker.sock \
上記のコードを使用すると、Watchtower コンテナーをバックグラウンドで起動し、現在のすべてのイメージの更新を監視できます。 Watchtower は実行中のコンテナーを監視するために Docker API と対話する必要があるため、これを使用して /var/run/docker.sock をコンテナーにマップする場合は -v パラメーターを追加する必要があります。
Synology のスケジュールされたタスクを使用して、Synology で Watchtower を実行します
Synology タスク プランを開き、新しいスケジュールされたタスクのユーザー定義スクリプトを作成し、次のスクリプトを入力して 1 回実行し、すべてのコンテナを更新し、古いコンテナをクリアします。
docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --cleanup --run-once
スケジュールされたタスクで自動的に実行するように設定することも、必要に応じて手動で実行することもできます。その後、Watchtower 自体を含むすべてのコンテナが自動的に更新されます。
オプション パラメータ
デフォルトでは、Watchtower は、それが指す Docker デーモン内で実行されているすべてのコンテナを監視します。ただし、Watchtower の起動時に特定のコンテナーの名前を指定して、それらの特定のコンテナーのみを監視することもできます。例:
docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --cleanup --run-once nginx redis
現時点では、Watchtower は「nginx」と「redis」という名前のコンテナーのみを監視し、他の実行中のコンテナーはすべて無視されます。 Watchtower をバックグラウンドで実行したくない場合は、 --run-once パラメーターを追加すると、Watchtower コンテナーがフォアグラウンドで実行されます。
--cleanup パラメータを使用して、更新後に古いイメージを自動的に削除します。
--monitor-only を使用すると、新しいイメージの監視と通知の送信のみが行われ、コンテナは更新されません
--interval を使用して、更新検出間隔を秒単位で設定します。たとえば、1 時間ごとに更新を確認するには、--interval 3600
です。より具体的な使用方法については、Watchtower の公式ドキュメントを参照してください。ここでは、よく使用される 2 つの方法のみを示します。 Synology は自動的にスケジュールされたタスクを使用できるため、--interval パラメーターを使用する必要はありません。
推奨される学習: 「docker ビデオ チュートリアル 」
以上がdocker 内のイメージは自動的に更新されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。