dockerhubのリモートイメージと比較して言います。 私はこれを行うための標準的な方法を探していましたが、私が見つけたのは壊れやすいbashスクリプトなどだけです。 このようなチェックを実行するための公式の推奨される方法はありません。 スタックオーバーフローの質問でも、まだ決定的な答えは得られていません。 どちらもこの同様の質問はありません。
ローカルイメージがリモートと比較して古くなっているかどうかを確認できることは、開発およびステージング環境に非常に役立ちます(docker-cloudでは、このための自動更新コンテナーをセットアップすることもできます)。 イメージのビルドが成功した後、Webhookを使用して再プルをトリガーする可能性があることは知っていますが、サーバーをリッスンするのではなく、サーバーからチェックを開始できるようにしたいとします。
現在、このチェックを実行するために使用できるdockerコマンドがないと想定するのは正しいですか、それともこの問題に対する明らかなdockerネイティブソリューションを見逃しましたか?
いいえ、現在、画像が「古くなっている」かどうかを確認するための組み込みオプションはありません。 コンテナの自動更新は、ユースケースごとに実際に異なるものです。 最新の画像に「盲目的に」更新することは簡単ではありません。 たとえば、 some-image:latest
は、_完全に_異なるイメージになる可能性があります(たとえば、 ubuntu:latest
は、ある時点で14.04から16.04に切り替えられた最新の「LTS」リリースを指します)、同時にsome-image:1.2.3
はSemVer(ish)タグのように「見えます」が、「タグ」スキームとその意味の両方を決定するのは画像作成者次第であるため、保証はありません(基本的にタグは無料です)フォーム「ラベル」)。
このため、コンテナには不変の識別子を使用することをお勧めします(たとえば、 ubuntu<strong i="9">@sha256</strong>:aabbbcccddd
)。 これにより、実行している正確なイメージバージョンを_テスト_でき、QAプロセスでテストされたものと_同じ_バージョンであることが保証されます。
上記のように、いくつかのオプションがあります。
docker compose
を使用する場合、 docker-compose pull
を使用して、作成スタックで使用されているすべての画像の最新バージョンをプルできます。docker build --pull .....
でFROM
定義されたイメージを強制的にプルできますdocker service update --force --image foo:bar <servicename>
は、指定されたfoo:bar
イメージの最新バージョンを解決し、サービスのすべてのインスタンスをそのバージョンに「固定」しますこれがあなたの質問に答えることを願っています。 GitHub課題追跡システムは、一般的なサポートフォーラムではなく、バグや機能のリクエストを報告することを目的としていることに注意してください。 他のタイプの質問については、次のいずれかを使用することを検討してください。
これはバグではないので、この問題をクローズしますが、会話を続けてください👍
ただし、「ブラインド更新」と(同じタグを使用して)リモートイメージが変更された
確かに。 コンテナ全体を毎日再ダウンロードすることなく、コンテナの更新を検出できる安定したメカニズムは素晴らしいでしょう。
セキュリティアップデートは非常に重要であり、この機能が欠けていても、最新の状態に保つのは簡単ではありません。
最も参考になるコメント
ただし、「ブラインド更新」と(同じタグを使用して)リモートイメージが変更された