У нас есть образы Docker, размещенные на Amazon ECR, и наша цель - запустить их на инстансах EC2 с помощью Docker Swarm. Службы настроены в глобальном режиме, поэтому они автоматически реплицируются на новые узлы. Группа с автоматическим масштабированием может автоматически добавлять новые экземпляры EC2 в рой.
Проблема в том, что Docker не может вытащить образы из реестра ECR. Есть ли способ заставить Docker Swarm работать aws ecr get-login
перед извлечением изображений или есть способ навсегда войти в ECR, продолжая использовать роль IAM для аутентификации в ECR?
Бег aws ecr get-login
при запуске новых узлов тоже не работает.
К вашему сведению: я не ищу --with-registry-auth
, это отлично работает, когда я вручную обновляю сервис, но не когда AWS автоматически добавляет новые узлы.
У меня была такая же проблема при использовании Docker Swarm и включенном автоматическом масштабировании AWS.
Решение: Вам необходимо периодически запускать следующую команду для всех служб.
docker service update -d -q --with-registry-auth service-name
Запуск aws ecr-get при запуске узла не сработает.
Это сообщение в блоге описывает проблему и предоставляет полное решение о том, как реализовать автоматический вход в ECR.
Для тех, кто все еще ищет решение, следуйте этой статье. Это более стабильное решение. https://medium.com/@MahmoudGaballah/ecr-for-docker-swarm-fdea3a9b01b1