Поиск…


Вступление

Частный и безопасный реестр докеров, а не Docker Hub. Требуются базовые навыки докеров.

параметры

команда объяснение
sudo docker run -p 5000: 5000 Запустите контейнер докеров и привяжите порт 5000 от контейнера к порту 5000 физической машины.
Реестр имен Название контейнера (лучше использовать для чтения «докер ps»).
-v 'pwd' / certs: / certs Bind CURRENT_DIR / certs физической машины на / certs контейнера (например, «общая папка»).
-e REGISTRY_HTTP_TLS_CERTIFICATE = / certs / server.crt Мы указываем, что реестр должен использовать файл /certs/server.crt для запуска. (переменная env)
-e REGISTRY_HTTP_TLS_KEY = / certs / server.key То же самое для ключа RSA (server.key).
-v / root / images: / var / lib / registry / Если вы хотите сохранить все изображения реестра, вы должны сделать это на физической машине. Здесь мы сохраняем все изображения на / root / images на физической машине. Если вы это сделаете, вы можете остановить и перезапустить реестр без потери изображений.
реестр: 2 Мы указываем, что мы хотели бы вытащить изображение реестра из узла докеров (или локально), и мы добавим «2», потому что мы хотим установить версию 2 реестра.

замечания

Как установить docker-engine (называемый клиентом в этом учебнике)

Как создать самоподписанный сертификат SSL

Создание сертификатов

Создайте закрытый ключ RSA: openssl genrsa -des3 -out server.key 4096

На этом этапе Openssl должен запросить пропущенную фразу. Обратите внимание, что мы будем использовать только сертификат для связи и аутентификации без пропущенной фразы. Например, используйте 123456.

Сгенерировать запрос openssl req -new -key server.key -out server.csr сертификата: openssl req -new -key server.key -out server.csr

Этот шаг важен, потому что вас попросят получить некоторую информацию о сертификатах. Наиболее важной информацией является «Общее имя», которое является доменным именем, которое используется для связи между частным реестром докеров и всей другой машиной. Пример: mydomain.com

Удаление фразы из закрытого ключа RSA: cp server.key server.key.org && openssl rsa -in server.key.org -out server.key

Как я уже сказал, мы сосредоточимся на сертификате без фразы. Поэтому будьте осторожны со всеми файлами вашего ключа (.key, .csr, .crt) и держите их в надежном месте.

Создайте самозаверяющий сертификат: openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Теперь у вас есть два важных файла: server.key и server.crt , которые необходимы для проверки подлинности частного реестра.

Запуск реестра с самозаверяющим сертификатом

Чтобы запустить частный реестр (безопасно), вы должны создать самозаверяющий сертификат, вы можете обратиться к предыдущему примеру для его создания.

В моем примере я помещал server.key и server.crt в / root / certs

Перед запуском команды docker вы должны поместить (используйте cd ) в каталог, содержащий папку certs . Если вы этого не сделаете, и вы попытаетесь запустить команду, вы получите сообщение об ошибке

level = fatal msg = "open /certs/server.crt: нет такого файла или каталога"

Когда вы находитесь ( cd /root в моем примере), вы можете в основном запустить защищенный / закрытый реестр, используя: sudo docker run -p 5000:5000 --restart=always --name registry -v `pwd`/certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/server.crt -e REGISTRY_HTTP_TLS_KEY=/certs/server.key -v /root/Documents:/var/lib/registry/ registry:2
Объяснения о команде доступны в разделе «Параметры».

Потяните или нажмите от клиента докера

Когда вы запускаете рабочий реестр, вы можете тянуть или нажимать на него изображения. Для этого вам нужен файл server.crt в специальную папку на вашем docker-клиенте. Сертификат позволяет выполнить аутентификацию с помощью реестра, а затем шифровать связь.

Скопируйте server.crt из реестра в файл /etc/docker/certs.d/mydomain.com:5000/ на клиентской машине. Затем переименуйте его в ca-certificates.crt : mv /etc/docker/certs.d/mydomain.com:5000/server.crt /etc/docker/certs.d/mydomain.com:5000/ca-certificates.crt

На этом этапе вы можете извлекать или перемещать изображения из своего частного реестра:
PULL: docker pull mydomain.com:5000/nginx или
ОТ СЕБЯ :

  1. Получите официальное изображение с hub.docker.com: docker pull nginx
  2. Отметьте это изображение перед тем, как docker tag IMAGE_ID mydomain.com:5000/nginx в частный реестр: docker tag IMAGE_ID mydomain.com:5000/nginx (используйте docker images докеров, чтобы получить IMAGE_ID)
  3. Вставьте изображение в реестр: docker push mydomain.com:5000/nginx


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow