
В этой статье будет рассмотрено как быстро и легко установить собственный приватный Docker репозиторий.
Частный репозиторий мы построим на Sonatype Nexus Repository Manager 3.0 OSS. А запускать контейнер из образа будем при помощи 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 будет следующим:
В этой конфигурации мы пробрасываем 2 порта до контейнера:
Также мы монтируем директорию data текущей директории nexus3 внутрь контейнера (в директорию /nexus-data) для сохранения состояния контейнера при его перезапусках. При использовании в продуктивной инсталляции вы можете использовать Docker диск (volume), расположенный на NAS или распределенной файловой системе, т.к. GlusterFS, например.
Приватный Docker репозиторий может понадобиться вам скорее всего только в одном случае: ограничение доступа к Docker образам периметром вашей организации. В остальных случаях можно пользоваться любыми публично доступными репозиториями.
Для запуска реестра, как обычно, необходимо выполнить команду docker-compose up с ключем -d для того, чтобы терминал вернул вам управление:
Первый запуск Nexus займет какое-то время. Понять, что реестр корректно запустился можно будет по выводу команды docker-compose logs:
Как только контейнер успешно запустится, вывод команды будет оканчиваться следующими строчками:
Как только контейнер с Nexus запустится, вы можете подключиться к Docker Engine на порт 8081. В моем случае (OS X, Docker for Mac) — это адрес .
Для того, чтобы настроить репозиторий, необходимо зайти под учетной записью администратора (меню «Sign In» в верхнем правом углу экрана):


Учетная запись администратора:
После прохождения процедуры аутентификации, зайдите в настройки:


Выберите «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!
Для того, чтобы подключиться к вашему только что созданному репозиторию, выполните команду:
Напомню, что 127.0.0.1 — адрес моего Docker Engine, на котором запущен мой контейнер.
Сохранение образа будет демонстрироваться на базе образа nginx:latest. Если такого образа в вашем репозитории нет, выполните команду:
Для того, чтобы сохранить ваш образ в приватном репозитории, необходимо так же как и в публичном создать для него тег. Для этого выполните следующую команду:
После этого можно смело сохранять образ:
Также сохраненный образ можно увидеть в Web-интерфейсе репозитория, перейдя в меню «Components» и выбрав ваш созданный репозиторий:


Для того, чтобы скачать необходимый образ из приватного репозитория необходимо пройти на нем аутентификацию и выполнить команду docker pull:
На сегодня все. Успехов с Docker!