Опубликовано 30 авг 2019Обновлено 1 окт 2025 17:15

Установка приватного Docker репозитория

docker
docker
контейнеры
контейнеры
виртуализация
виртуализация
News Title Block Picture
Содержание
Содержание
Поделиться

В этой статье будет рассмотрено как быстро и легко установить собственный приватный 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 будет следующим:

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 репозиторий может понадобиться вам скорее всего только в одном случае: ограничение доступа к Docker образам периметром вашей организации. В остальных случаях можно пользоваться любыми публично доступными репозиториями. 

Запуск 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!

Узнай, кто стоит за технологиями в K2 Cloud — и стань одним из них

Переходи на карьерную страницу, знакомься с нашими подходами и найди команду, подходящую именно тебе.

Другие новости

Продолжая использовать сайт k2.cloud, Вы соглашаетесь на обработку персональных данных, собираемых с использованием файлов cookie, а также посредством метрических программ «Яндекс Метрика», «ВК Реклама». Более подробная информация – в политике обработки и использования cookie-файлов.