Установка приватного Docker репозитория
В этой статье будет рассмотрено как быстро и легко установить собственный приватный Docker репозиторий.
Приватный Docker репозиторий может понадобиться вам скорее всего только в одном случае: ограничение доступа к Docker образам периметром вашей организации. В остальных случаях можно пользоваться любыми публично доступными репозиториями.
Введение
В качестве решения для организации приватного репозитория мы будем использовать Sonatype Nexus Repository Manager 3.0 OSS. А запускать необходимый контейнер из его образа мы будем при помощи Docker Compose (кратко о Docker Compose).
Для того, чтобы это сделать, создайте в месте, где вы обычно работаете над собственными проектами директорию, например, nexus3, а внутри нее директорию data и файл docker-compose.yml:
$ mkdir -p nexus3/data
$ touch nexus3/docker-compose.yml
$ tree nexus3/
nexus3/
├── data
└── docker-compose.yml
1 directory, 1 file
Содержимое docker-compose.yml будет следующим:
nexus:
image: sonatype/nexus3:latest
ports:
- "8081:8081"
- "8123:8123"
volumes:
- ./data:/nexus-data
В этой конфигурации мы пробрасываем 2 порта до контейнера:
- для Web-UI интерфейса
- API интерфейс для Docker реестра
Также мы монтируем директорию data текущей директории nexus3 внутрь контейнера (в директорию /nexus-data) для сохранения состояния контейнера при его перезапусках. При использовании в продуктивной инсталляции вы можете использовать Docker диск (volume), расположенный на NAS или распределенной файловой системе, т.к. GlusterFS, например.
Запуск Docker реестра (Nexus)
Для запуска реестра, как обычно, необходимо выполнить команду docker-compose up с ключем -d для того, чтобы терминал вернул вам управление:
$ docker-compose up -d
Первый запуск Nexus займет какое-то время. Понять, что реестр корректно запустился можно будет по выводу команды docker-compose logs:
$ docker-compose logs
Как только контейнер успешно запустится, вывод команды будет оканчиваться следующими строчками:
nexus_1 | -------------------------------------------------
nexus_1 |
nexus_1 | Started Sonatype Nexus OSS 3.2.0-01
nexus_1 |
nexus_1 | -------------------------------------------------
Создание Docker репозитория
Как только контейнер с Nexus запустится, вы можете подключиться к Docker Engine на порт 8081. В моем случае (OS X, Docker for Mac) — это адрес .
Для того, чтобы настроить репозиторий, необходимо зайти под учетной записью администратора (меню «Sign In» в верхнем правом углу экрана):
Учетная запись администратора:
- Логин: admin
- Пароль: admin123
После прохождения процедуры аутентификации, зайдите в настройки:
Выберите «Repositories»
Нажмите на кнопку «Create repository»:
В списке доступных репозиториев выберите «docker (hosted)»:
Укажите имя репозитория (Name), выставьте порт 8123 (второй экспортированный порт в docker-compose.yml), а также поставьте галочку «Allow clients to use the V1 API to interact with this Repository», если вам нужна поддержка протокола репозитория V1:
Нажмите на кнопку «Create repository», чтобы сохранить изменения.
Поздравляю, вы только что установили ваш приватный репозиторий на Nexus!
Работа с приватным репозиторием. Подключение к приватному репозиторию
Для того, чтобы подключиться к вашему только что созданному репозиторию, выполните команду:
$ docker login -u admin -p admin123 127.0.0.1:8123
Login Succeeded
Напомню, что 127.0.0.1 — адрес моего Docker Engine, на котором запущен мой контейнер.
Сохранение Docker образа в приватный репозиторий
Сохранение образа будет демонстрироваться на базе образа nginx:latest. Если такого образа в вашем репозитории нет, выполните команду:
$ docker pull nginx:latest
Для того, чтобы сохранить ваш образ в приватном репозитории, необходимо так же как и в публичном создать для него тег. Для этого выполните следующую команду:
$ docker tag nginx:latest 127.0.0.1:8123/my_nginx:latest
После этого можно смело сохранять образ:
$ docker push 127.0.0.1:8123/my_nginx:latest
The push refers to a repository [127.0.0.1:8123/my_nginx]
7d530616ebc2: Pushed
db07381cb585: Pushed
a2ae92ffcd29: Pushed
latest: digest: sha256:a5a0cadd0a8a9d2f42c0cd03a55cd0c610f6cc1466a6f9f9f96b4ae6513e9907 size: 948
Также сохраненный образ можно увидеть в Web-интерфейсе репозитория, перейдя в меню «Components» и выбрав ваш созданный репозиторий:
Загрузка Docker образа из приватного репозитория
Для того, чтобы скачать необходимый образ из приватного репозитория необходимо пройти на нем аутентификацию и выполнить команду docker pull:
$ docker login -u admin -p admin123 127.0.0.1:8123
$ docker pull 127.0.0.1:8123/my_nginx:latest
На сегодня все. Успехов с Docker!