web-dev-qa-db-ja.com

Dockerサービス/スタックが使用する最新のイメージを更新するにはどうすればよいですか?

の中に .yml定義、私は常にサービスのlatestイメージを取得しています。

新しいイメージをレジストリにプッシュし、スタック内のサービスが使用するイメージを更新したい場合。何も表示されません--pullフラグ、および docker service update のドキュメントでは、これについて明示的に言及していません。

最近プッシュされたlatestイメージを使用して再デプロイするにはどうすればよいですか?

本当に実稼働環境でlatestを使用したり、ローカルマシンのテストや学習以外の目的で使用したりしないでください。それはあなたが使用している画像についてすべてを曖昧にし、docker service ls/psデフォルトで最新であり、他のあらゆるあいまいさがある場合(SHAがDocker HubのGUIに表示されないなど)。

それを回避する方法がない場合は、少なくともSwarm triesを使用してレジストリをクエリし、更新されたSHAを確認します。 docker service update --image <username>/<repo> <servicename>その後、ローリング更新をプルして実行します。あなたは見ることができます docker eventsが発生していることを確認し、docker service ps --no-trunc <servicename>後で確認して、SHA古い画像と新しい画像のハッシュを確認します。

5
Bret Fisher

Bret Fisherの回答に追加するには、同じdocker stack deploy -c compose-file.ymlファイルを使用してcompose-file.ymlを実行し、画像にlatestのタグを付けます画像のSHA=を実際に比較し、必要に応じて対応するサービスの画像を再デプロイします。

これは、Docker 17.09で追加された--resolve-imageフラグのおかげで、デフォルトではalwaysになっています。

また、テスト中に、必要に応じて最新のイメージを取得することもわかりました。

関連するGitHubの問題: https://github.com/moby/moby/issues/30951#issuecomment-342647614

1
Scotow