の中に .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古い画像と新しい画像のハッシュを確認します。
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 。