DevOps担当者にとって、Dockerコンテナを最新の状態に保つことは極めて重要なタスクです。Dockerコンテナを手動で更新するのは時間のかかる作業です。この記事では、 Watchtowerとは何か、インストール方法、そしてWatchtowerを使ってLinuxで実行中のDockerコンテナを自動更新する方法について説明します。 ものみの塔とは何ですか?Watchtower は、実行中の Docker コンテナを監視し、ベースイメージの変更を検出するとコンテナを自動的に更新するために使用される無料のオープンソース アプリケーションです。 Watchtower は、実行中のコンテナを更新する必要があることを検出すると、SIGTERM シグナルを送信して実行中のコンテナを正常に終了します。 新しいイメージをダウンロードし、コンテナを最初にデプロイした時と同じように再起動します。すべてのファイルはバックグラウンドで自動的にダウンロードされるため、ユーザーの介入は必要ありません。 このガイドでは、Watchtower を使用して Unix 系システムで実行中の Docker コンテナを自動的に更新する方法について説明します。 このガイドを CentOS と Ubuntu でテストしましたが、プロセスはすべての Linux ディストリビューションで同じです。 LinuxにWatchtowerをインストールするWatchtowerはDockerイメージとしてダウンロードできます。そのため、導入は簡単です。LinuxシステムにDockerイメージをインストールし、Watchtowerを実行するだけで、すぐにDockerコンテナの監視を開始できます。 PRM および DEB パッケージ管理システムに Docker をインストールするには、以下の手順を参照してください。
Docker をインストールした後、次のコマンドを使用して、Watchtower コンテナを # docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtowerDocker Desktop がすでにインストールされている場合は、Watchtower コンテナを通常のユーザーとして実行します。 $ docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower このコマンドは、 出力例: ローカルで画像「containrrr/watchtower:latest」が見つかりません Watchtower Dockerコンテナを実行する Watchtowerを使用してDockerコンテナを自動的に更新するシステム上では、Watchtower が他のコンテナと並行して実行されています。実行中の Docker コンテナのリストは、以下のコマンドで確認できます。 $ docker ps 出力例: コンテナID イメージ コマンド 作成ステータス ポート名 上記の出力に示されているように、 Watchtower はコンテナのベースイメージへの変更を検出すると、 同様に、実行中のすべてのコンテナを数分ごとに自動的にチェックし、自動的に更新します。 Watchtower は複数接続されたコンテナをどのように更新しますか?Watchtower は、複数接続されたコンテナを監視する際に非常にインテリジェントです。 現在 2 つのコンテナを実行しているとします。 $ docker ps 出力例: コンテナID イメージ コマンド 作成ステータス ポート名 実行中の Docker コンテナを表示する ご覧のとおり、 Watchtower が 特定のコンテナを監視するデフォルトでは、Watchtower はそれが指す Docker デーモンで実行されているすべての Docker コンテナを監視します。 ただし、次に示すように、コンテナ名を指定することにより、Watchtower による監視を特定の Docker コンテナに制限することができます。 $ docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower ostechnix-wordpress-1 上記の例では、 パラメータを指定しない場合、Watchtower は通常どおり実行中のすべての Docker コンテナを監視します。 通知を送信コンテナの更新に関する通知を受け取りたい場合、メール、Slack、MSTeams、Gotify で通知を送信できます。 以下の例は、電子メールで通知を送信する方法を示しています。SMTPサーバーが既に設定されていることを前提としています。 docker run -d \ 詳細については、以下の Watchtower Github リポジトリと Watchtower 公式ホームページを参照してください。 材料
|