2016-01-05 2 views
0

В настоящее время у нас есть настройка реестра докеров, которая имеет безопасность. Обычно, чтобы получить доступ к нему, с точки зрения разработчика, я должен сделать длинный с docker login --username=someuser --password=somepassword --email [email protected] https://docker-registry.domain.com.Установить сертификат на Centos 7 для доступа к реестру докеров

Однако, поскольку в настоящее время я пытаюсь выполнить автоматическое развертывание контейнера докеров в облаке, одна из операций, которая является командой docker pull, терпит неудачу, поскольку вход не выполнен (он работает, если я добавляю логин в шаблоне, но это плохо).

Мне предложили использовать сертификат, чтобы можно было сделать попытку (файл .crt). Я попробовал установить сертификат, используя описанные здесь шаги: https://www.linode.com/docs/security/ssl/ssl-apache2-centos

Но, похоже, он не работает, мне все же нужно сделать ручной вход для того, чтобы выполнить мой docker pull из реестра.

Есть ли способ заменить команду входа в систему с помощью сертификата?

ответ

1

Как я вижу, это неправильный URL-адрес для аутентификации SSL между сервером докеров и частным сервером реестров.

Вы можете следить за этим:

Запуск реестр доменных

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

Получить сертификат

Предполагая, что вы являетесь владельцем домена myregistrydomain.com, и что его DNS запись указывает на хост, где вы работаете реестра, в первую очередь необходимо получить сертификат от CA.

Создать CERTS каталог:

mkdir -p certs 

Затем перемещения и/или переименовывать файл КДД: CERTS/domain.crt, и ваш ключевой файл: CERTS/domain.key.

Убедитесь, что вы остановили свой реестр от предыдущих шагов, а затем начать свой реестр снова TLS включены:

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

Теперь вы должны иметь возможность получить доступ к реестру из другого Docker хоста:

docker pull ubuntu 
docker tag ubuntu myregistrydomain.com:5000/ubuntu 
docker push myregistrydomain.com:5000/ubuntu 
docker pull myregistrydomain.com:5000/ubuntu 

Gotcha

Выдающий сертификат сертификат может предоставить вам промежуточный сертификат. В этом случае вы должны объединить свой сертификат с промежуточным звеном для формирования пакета сертификатов. Вы можете сделать это, используя команду cat:

cat domain.crt intermediate-certificates.pem > certs/domain.crt 
+0

Да, я не продвигался в правильном направлении. У меня нет прав администратора в реестре докеров, поэтому я не знаю, был ли он запущен именно так, но я думаю, что это так, поскольку меня попросили использовать файл .crt. Однако, если я не понял, что вы сказали, вы используете сертификат при запуске реестра.Когда вы выполняете 'docker pull ', как я могу указать использование сертификата для доступа к реестру? Если я не должен указывать его при запуске моего демона докеров (на другом хосте), прежде чем делать тягу ... – Amaranth

+0

Вы должны указать изображение, которое вы хотите вытащить или нажать. Например: как только вы создали образ «abc», вы хотите нажать его на сервер реестра. вы используете: «docker tag abc yourdomainregistryserver.com:5000/abc», «docker push yourdomainregistryserver.com:5000/abc», после чего вы хотите загрузить изображение «abc» на сервер докеров, вы используете: «docker pull yourdomainregistryserver. com: 5000/abc " –

+0

Отличное предупреждение о объединении промежуточного сертификата с сертификатом сайта. Сэкономил мне много времени. – user837048

Смежные вопросы