Подтвердить что ты не робот

Docker: Каков самый простой способ защитить частный реестр?

Наши изображения Docker отправляют закрытые источники, мы должны хранить их где-то в безопасности, используя собственный приватный реестр докеров. Мы ищем самый простой способ развернуть частный реестр докеров с простым уровнем проверки подлинности.

Я нашел:

Я думаю использовать shipyard/docker-private-registry, но есть ли другой лучший способ?

4b9b3361

Ответ 1

Я все еще изучаю, как запускать и использовать Docker, подумайте об этом:

# Run the registry on the server, allow only localhost connection
docker run -p 127.0.0.1:5000:5000 registry

# On the client, setup ssh tunneling
ssh -N -L 5000:localhost:5000 [email protected]

Затем реестр доступен на localhost: 5000, аутентификация выполняется через ssh, который вы, вероятно, уже знаете и используете.

Источники:

Ответ 2

Вы также можете использовать интерфейс Nginx с Basic Auth и SSL-сертификатом.

Что касается сертификата SSL, я пробовал пару часов, чтобы иметь действующий самозаверяющий сертификат, но Docker не смог работать с реестром. Чтобы решить эту проблему, у меня есть бесплатный подписанный сертификат, который отлично работает. (Я использовал StartSSL, но есть и другие). Также будьте осторожны при создании сертификата. Если вы хотите, чтобы реестр работал на URL registry.damienroch.com, вы должны указать этот URL-адрес в поддомене, иначе он не будет работать.

Вы можете выполнить всю эту настройку с помощью Docker и моего изображения nginx-proxy (см. README on Github: https://github.com/zedtux/nginx-proxy). Это означает, что в случае, когда вы установили nginx с помощью диспетчера дистрибутива, вы замените его контейнером nginx.

  • Поместите свой сертификат (.crt и .key) на свой сервер в папке (я использую /etc/docker/nginx/ssl/, а имена сертификатов private-registry.crt и private-registry.key)
  • Создайте файл .htpasswd и загрузите его на свой сервер (я использую /etc/docker/nginx/htpasswd/, а имя файла accounts.htpasswd)
  • Создайте папку, в которой будут сохранены изображения (я использую /etc/docker/registry/)
  • Использование docker для запуска моего образа nginx-proxy
  • Запустите реестр докеров с некоторой переменной среды, которую nginx-proxy будет использовать для настройки.

Ниже приведен пример команд для выполнения предыдущих шагов:

sudo docker run -d --name nginx -p 80:80 -p 443:443 -v /etc/docker/nginx/ssl/:/etc/nginx/ssl/ -v /var/run/docker.sock:/tmp/docker.sock -v /etc/docker/nginx/htpasswd/:/etc/nginx/htpasswd/ zedtux/nginx-proxy:latest
sudo docker run -d --name registry -e VIRTUAL_HOST=registry.damienroch.com -e MAX_UPLOAD_SIZE=0 -e SSL_FILENAME=private-registry -e HTPASSWD_FILENAME=accounts -e DOCKER_REGISTRY=true -v /etc/docker/registry/data/:/tmp/registry registry

Первая строка запускает nginx, а второй - реестр. Важно сделать это в этом порядке.

Когда оба пользователя работают и работают, вы должны иметь возможность входа в систему:

docker login https://registry.damienroch.com

Ответ 3

Я создал почти готовый к использованию, но, конечно, готов к настройке для запуска docker-реестра: https://github.com/kwk/docker-registry-setup.

Возможно, это помогает.

В контейнерах работает все (Registry, сервер Auth и сервер LDAP)), что делает детали заменяемыми, как только вы будете готовы к. Настройка полностью сконфигурирована таким образом, чтобы было легко начать работу. Существуют даже демо-сертификаты для HTTP, но они должны быть заменены в какой-то момент.

Если вы не хотите, чтобы аутентификация LDAP, но простая статическая аутентификация, вы можете отключить ее в auth/config/config.yml и добавить свою собственную комбинацию имен пользователей и хешированных паролей.