BeTrfo

BeTrfo

love

WatchTowerを使用してコンテナの自動更新を行う(簡単な使い方)

Docker の普及に伴い、基本的に 90% のプロジェクトがアプリケーションをデプロイし、隔離するために Docker を提供しています。デプロイ前にいくつかの基本的な経験があれば、今後の更新やデータの保存方法を事前に設定することができます。しかし、Docker にほとんど理解がないユーザーにとっては、ユーザードキュメントをコピー&ペーストして実行するしかなく、後の更新は非常に不明瞭で、再デプロイするしかありません。
偶然 GithubWatchTower というプロジェクトを見つけました。これがコンテナ更新の最良の解決策かもしれないと思いました。

簡単な紹介#

Watchtower はコンテナ管理ツールで、推奨されるインストール方法も Docker を使用することです。Docker 内のコンテナを監視し、依存しているイメージが更新された後に自動的にコンテナを更新し、データを復元することができます。

いくつかの利点#

  1. 自動更新で、手動の介入が不要で、更新時にはすべてのデータ情報を保存します。
  2. 簡単に使え、デフォルトの実行方法も直接 Docker で実行され、他の余分な設定は必要ありません。
  3. カスタマイズの自由度が高く、時間点、更新イメージ戦略、更新コンテナ戦略などの設定をサポートしています。
  4. 軽量で、既存のサービスとシームレスに統合され、他の余分な設定は必要ありません。

簡単な使い方#

WatchTower はデフォルトで以下の Docker コマンドを実行するだけで動作します。デフォルトでは 5 分ごとにチェックし、起動後のログには各実行の時間や次回の実行予定時間が含まれます。

docker run -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower

ここで、起動時に他の設定を追加することもできます。

  • デフォルトのタイムゾーンを設定します。ここでは直接東八区に設定します。
  • バックグラウンドで実行します。
  • 再起動ポリシーを設定し、docker が再起動しても引き続き実行されます。
# -d バックグラウンドで実行
# -e TZ="Asia/Shanghai" タイムゾーンを東八区に設定。
# -v /var/run/docker.sock:/var/run/docker.sock WatchTower がコンテナ情報を取得できるようにします。
docker run -d \
           --name watchtower \
           -e TZ="Asia/Shanghai" \
           --restart=always \
           -v /var/run/docker.sock:/var/run/docker.sock \
           containrrr/watchtower

拡張設定#

基本的なアプリケーションに加えて、いくつかの一般的な拡張設定をリストアップします:

  • --run-once 一度だけ実行します。
  • --cleanup 実行後に未使用のイメージをクリーンアップします。
  • --include-stopped 停止したコンテナもチェックします。
  • --schedule cron 定期戦略を使用して実行します。
  • --interval インターバル時間を使用して実行し、--schedule とのいずれかを選択します。

以上を組み合わせると、いくつかの一般的な方法を整理できます。

  1. コンテナイメージの更新を手動で一度実行し、停止したコンテナを含めて、更新後に一度クリーンアップを実行します。
docker run --rm \
           --name watchtower \
           -e TZ="Asia/Shanghai" \
           -v /var/run/docker.sock:/var/run/docker.sock \
           containrrr/watchtower \
           --run-once \
           --cleanup \
           --include-stopped

image

  1. バックグラウンドで実行し、毎朝 5 時に一度チェックを実行します(ここで使用する cron は 6 桁で、linux システムのデフォルトサポートとは異なることに注意が必要です)。
docker run -d \
           --name watchtower \
           -e TZ="Asia/Shanghai" \
           -v /var/run/docker.sock:/var/run/docker.sock \
           containrrr/watchtower \
           --cleanup \
           --include-stopped \
           --schedule "0 0 5 * * *"

image

  1. バックグラウンドで実行し、毎時一度チェックを実行します(ここでの単位は s なので、一時間は 3600 に設定します)。
docker run -d \
           --name watchtower \
           -e TZ="Asia/Shanghai" \
           -v /var/run/docker.sock:/var/run/docker.sock \
           containrrr/watchtower \
           --cleanup \
           --include-stopped \
           --interval 3600

image

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。