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

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

2889
6 минут

В этой статье будет рассмотрено как быстро и легко установить собственный приватный Docker репозиторий.

Приватный Docker репозиторий может понадобиться вам скорее всего только в одном случае: ограничение доступа к Docker образам периметром вашей организации. В остальных случаях можно пользоваться любыми публично доступными репозиториями.


Внедряем и поддерживаем Kubernetes/DevOps
Развертываем и сопровождаем инфраструктуру для бизнес-приложений на базе микросервисов и контейнеров

Введение

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

Nexus-Sign-In.png

Учетная запись администратора:

  • Логин: admin
  • Пароль: admin123

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

Nexus-Settings.png
Выберите «Repositories»
Nexus-Repositories.png
Нажмите на кнопку «Create repository»:
Nexus-Create-repository.png
В списке доступных репозиториев выберите «docker (hosted)»:
Nexus-Docker-hosted.png
Укажите имя репозитория (Name), выставьте порт 8123 (второй экспортированный порт в docker-compose.yml), а также поставьте галочку «Allow clients to use the V1 API to interact with this Repository», если вам нужна поддержка протокола репозитория V1:
Nexus-Docker-repo-settings.png
Нажмите на кнопку «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» и выбрав ваш созданный репозиторий:

Nexus-Saved-image.png

Загрузка 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!

15 ноября 2022
OpenShift остался без поддержки – как решить проблему российским клиентам
Интерес к семейству ПО для контейнеризации OpenShift был довольно высоким в корпоративном сегменте в прежние годы. По данным мониторинговой службы Datadog, только за прошлый год во всем мире количество пользователей платформ от RedHat увеличилось на 28%. Весной IBM объявил об уходе из России и прекращении поддержки всех программных продуктов для текущих клиентов. Разберемся, насколько критичной оказалась данная ситуация для заказчиков, и какие варианты действий существуют, чтобы минимизировать возможные риски отключения от сервиса.
0 минут
709
25 февраля 2021
Свидетели DevOps: мифы и байки про девопсов и тех, кто их нанимает
Те, кто решил стать девопсом, видят в этой профессии заманчивые перспективы. Это новый уровень мышления, это творчество и возможность создавать, это безграничные просторы для самосовершенствования. Не секрет также, что девопсам хорошо платят. Вместе с тем, вокруг понятия DevOps сформировался некий культ, овеянный мифами и легендами.
0 минут
1004
4 декабря 2020
Дайджест обновлений К2 Облака осень 2020 г.
За осень в К2 Облаке многое изменилось. Мы активно писали код и не успевали сообщать обо всех переменах. Постараемся исправиться и информировать вас ASAP, чтобы вы могли сразу же использовать новые фичи.
1 минута
299
scrollup