web-dev-qa-db-ja.com

Dockerサービスの更新:「レジストリでイメージにアクセスして、ダイジェストを記録できませんでした」

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レジストリからダイジェストを読み取れないのはなぜですか?

22
David Elner

同じ問題がありましたが、--with-registry-authを使用して解決しました。 docker loginでログインした後、--with-registry-authで同じ更新コマンドを確認できますか?

https://github.com/moby/moby/issues/34153#issuecomment-316047924

31
Akira Fukushima