Как использовать небезопасные реестры докеров с 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

Я надеюсь, что это также помогает другим людям

Другие вопросы по тегам