Некоторые языки программирования допускают изменения, но сопротивляются прогрессу. (Алан.Дж.Перлис)

Как настроить безопасный Docker registry в Linux с помощью сертификата TLS SSL

3 мин для чтения
FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
31 марта 2017
Как настроить безопасный реестр Docker в Linux с помощью TLS SSL сертификата
Если вы создаете пользовательские изображения в Docker registry для Вашего предприятия, у вас есть два варианта о том, где размещать свои изображения для Docker:

  1. Docker Hub – Это служба размещения реестра является бесплатной и предоставляется Docker Inc. Она также имеют несколько функций корпоративного уровня, где вы можете создать несколько учетных записей для организаций, настройки автоматической сборки и т.д.
  2. Самодостаточны Docker registry – Вы можете настроить реестр Docker в вашей организации, которая будет принимать ваши собственные изображения.

Это руководство объясняет, как установить безопасный самописный Docker реестр.

1. Настройка TLS-сертификата и ключа

Скопируйте существующий сертификат и ключевой файл в каталог ~/docker-certs.

# mkdir /root/docker-certs

# cd /root/docker-certs

# ls -1
andreyex.crt
andreyex.key
intermediateCA.pem

 

В этом примере я использую файл сертификата andreyex.crt и файл andreyex.key, который был создан для моего веб-сервера Apache.

Для получения дополнительной информации о том, как создать свой собственный сертификат и файл ключа, обратитесь к следующему гиду: Как установить сертификат SSL и SPDY на Ubuntu с помощью «Let’s Encrypt».

2. Управление файлом промежуточного сертификата

В этом случае, я также имел сертификат Let’s Ensrypt из моего центра сертификации.

Для Docker registry, вы должны объединить оба сертификата и промежуточный сертификат в тот же файл сертификата.

т.е. добавить содержание вашего промежуточного сертификата в файл сертификат, как показано ниже.

cd /root/docker-certs

cat intermediateCA.pem >> andreyex.crt

3. Запустите Ваш защищенный Registry Docker

Теперь запустите безопасный Docker, как показано ниже.

docker run -d -p 5000:5000 --restart=always --name registry \
  -v /root/docker-certs:/certs \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/root/docker-certs/andreyex.crt \
  -e REGISTRY_HTTP_TLS_KEY=/root/docker-certs/andreyex.key \
  registry:2

 

В приведенной выше команде:

  • Docker registry начал работу на порту 5000
  • Название контейнера Docker «registry»
  • Локальный каталог, который содержит сертификат /root/docker-cert отображаются в виде /certs внутри контейнера реестра Docker.
  • Переменная REGISTRY_HTTP_TLS_CERTIFICATE указывает на файл сертификата с полным путем
  • Переменная REGISTRY_HTTP_TLS_KEY указывает на имя файла ключа с полным путем

После запуска реестра Docker, вы теперь увидите работающего контейнера реестра, как показано ниже:

# docker ps
CONTAINER ID  IMAGE       COMMAND                  CREATED         STATUS         PORTS                    NAMES
v347s8c5dest  registry:2  "/entrypoint.sh /etc/"   25 seconds ago  Up 1 seconds   0.0.0.0:5000->5000/tcp   registry

4. Доступ к защищенному реестру Docker

После того, как безопасный Docker registry настроен, вы можете получить доступ к нему с других серверов внутри вашей сети (или от внешней сети), а также использовать все стандартные команды Docker на нем.

Например, вы можете нажать или вытянуть изображение для этого безопасного Docker registry, как показано ниже.

docker pull andreyex.com:5000/mongodb

docker push andreyex.com:5000/mongodb

5. Настройка небезопасного реестра Docker

Примечание:
Если у вас возникли какие-либо проблемы с Secure Docker Registry, для отладки цели, запустите реестр без сертификата и посмотрите, как он работает, как показано ниже:
docker run -d -p 5000:5000 --restart=always --name registry registry:2

 

При попытке вывести изображение (или выполнить любую другую операцию) из вашего Docker registry, вы можете получить следующее сообщение об ошибке “oversized record received with length”.

Например, когда мы выполнили следующую команду на удаленном сервере (не на сервере, где находится установка docker registry), мы получаем следующее сообщение об ошибке:

# docker pull 192.168.51.1:5000/mongodb
Using default tag: latest
Error response from daemon: Get https://192.168.51.1:5000/v1/_ping: tls: oversized record received with length 20527

 

В этом случае, 192.168.51.1 является сервером, на котором работает защищенный docker registry (мы без сертификатов безопасности).

В этом случае на удаленном сервере, вы должны разрешить небезопасные операции в реестре. Для этого вы должны передать параметр «-insecure-реестр» в переменную среды DOCKER_OPTS.

На удаленном сервере изменить этот файл и добавьте следующую строку:

vi /etc/default/docker
DOCKER_OPTS="--insecure-registry 192.168.101.1:5000"

 

Теперь перезапустите docker на удаленном сервере.

systemctl daemon-reload
systemctl stop docker
systemctl start docker

 

Теперь, docker будет тянуть (или любая другая команда docker) будет работать без каких-либо проблем, так как стоит небезопасный вариант настройки реестра.

docker pull 192.168.101.1:5000/mongodb

Как настроить безопасный реестр Docker в Linux с помощью TLS SSL сертификата

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Просмотров: 259

Если статья понравилась, то поделитесь ей в социальных сетях:

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close