Как использовать небезопасные реестры докеров с Amazon EC2 Container Service (ECS)?
Мы используем реестр Docker внутри нашего AWS VPC, который недоступен извне. Мы хотим иметь возможность запускать задачи в ECS из этого реестра, однако мы видим, что служба находится только в состоянии PENDING, потому что демон Docker не может получить доступ к реестру.
Я нашел своего рода обходной путь, изменив пользовательские данные конфигурации запуска, но мне кажется, что я делаю это не лучшим образом:
#!/bin/bash
echo ECS_CLUSTER=MY_CLUSTER_NAME >> /etc/ecs/ecs.config
echo OPTIONS=--insecure-registry=insecure.registry.hostname:5000 > /etc/sysconfig/docker
service docker restart
docker start ecs-agent
Это отлично работает, и я вижу, что моя задача выполняется так, как ожидалось. Я просто не думаю, что это лучший способ сделать это.
AWS указал мне на эту статью, в которой обсуждается аутентификация в частных реестрах, но я не собираюсь проходить аутентификацию, просто чтобы Docker игнорировал тот факт, что я использую небезопасный (т.е. не HTTPS) реестр.
У кого-нибудь есть лучшее решение?
Спасибо
1 ответ
Я поговорил с AWS и у меня есть следующее решение:
Вы можете сделать что-то вроде установки параметров докера (включая --insecure-registry
) со скриптом пользовательских данных, который выполняется при загрузке. Например, --insecure-registry
может быть установлен с помощью скрипта, как показано ниже:
#cloud-config
bootcmd:
- cloud-init-per instance $(echo "OPTIONS=\"--insecure-registry=hostname:5000\"" > /etc/sysconfig/docker)
Этот способ позволяет избежать предыдущего решения, поскольку перезапуск докера не выполняется.
Что касается небезопасного метода, если мы используем самозаверяющий сертификат, мы можем использовать его, либо добавив сертификат в хранилище доверенных сертификатов системы или в специальное доверенное хранилище Docker.
В AMI Amazon Linux и AMI, оптимизированном для ECS, хранилище доверенных сертификатов системы CA находится по адресу /usr/share/pki/ca-trust-source
или же /usr/share/pki/ca-trust-source/anchors
(в зависимости от формата см. /usr/share/pki/ca-trust-source/README
для деталей), и вам нужно будет запустить update-ca-trust
Команда после добавления сертификата. Документация Докера о незащищенных реестрах дает более подробную информацию об этом:
https://docs.docker.com/reference/commandline/cli/ https://github.com/docker/docker/blob/master/docs/sources/articles/certificates.md
Я надеюсь, что это также помогает другим людям