AmazonのElastic Container Registry(ECR)に、DockerシングルノードswarmのDockerサービスとしてデプロイしたいイメージがあります。現在、サービスは画像のlatest
タグの古いバージョンを実行していますが、それ以来、新しいバージョンのlatest
タグをECRにアップロードしました。
画像docker service update --force my_service
を使用するswarmノードでXXXXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/my_service:latest
を実行すると、次の結果になります。
image XXXXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/my_service:latestは、レジストリでアクセスしてダイジェストを記録できませんでした。各ノードはXXXXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/my_service:latestに個別にアクセスし、異なるバージョンのイメージを実行する異なるノードにつながる可能性があります。
これにより、ノードがレジストリからlatest
タグの新しいコピーを取得できなくなり、サービスが適切に更新されなくなります。
docker login
を使用してECRに適切にログインし、docker pull XXXXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/my_service:latest
を実行すると正常に機能します(ダイジェストを返します)。
docker service update
が画像が利用可能であるにもかかわらずECRレジストリからダイジェストを読み取れないのはなぜですか?
同じ問題がありましたが、--with-registry-auth
を使用して解決しました。 docker login
でログインした後、--with-registry-auth
で同じ更新コマンドを確認できますか?
https://github.com/moby/moby/issues/34153#issuecomment-316047924