Организация собственного реестра Docker образов с помощью Harbor

Организация собственного реестра Docker образов с помощью Harbor

Docker Container Registry - это сервер хранения и распространения образов Docker. Существует довольно много публичных реестров, такие как Docker Hub (по умолчанию), Amazon ECR, GitHub CR и так далее, однако, бесплатно распространять образы на подобных ресурсах можно только в открытом доступе. В платных опциях доступны приватные репозитории, однако, мы знаем примеры, когда доступ к удаленным серверам может внезапно “улетучиться” независимо от того, каким тарифом ты пользуешься.

💡 Нас же интересует вариант поднятия своего реестра в закрытом контуре, т.е. только для внутреннего использования.

✏ Типовым решением является использование официального образа registry - простой и быстрый способ создания хранилища. Работает исправно, свою функцию выполняет, но для более гибкой настройки и управления существуют альтернативные варианты.

Harbor - это open source self-hosted система управления хранилищем Docker образов, написанная на Go.

📌 Особенности

  • Контроль доступа (роли, политики) и SSO
  • Встроенный сканер безопасности Trivy
  • Репликация между инстансами Harbor и другими реестрами
  • Web-панель управления
  • REST API
  • Логи, метрики

Trivy как-то упоминал в цикле про работу с образами в Docker. Пример в 3 части на сайте.

⚒ Установка

🔹 Скачиваем актуальную версию из релизов и распаковываем архив

wget https://github.com/goharbor/harbor/releases/download/v2.14.0/harbor-online-installer-v2.14.0.tgz tar -zxvf harbor-online-installer-v2.14.0.tgz

🔹 Вносим правки в конфигурационный файл harbor.yml

cd harbor cp harbor.yml.tmpl harbor.yml vi harbor.yml
# поднимаю на домашней виртуалке, поэтому без https hostname: 192.168.1.135 http: port: 80 #https: # port: 443 # certificate: /your/certificate/path # private_key: /your/private/key/path # strong_ssl_ciphers: false

🔹 Запускаем установочный скрипт

# + опция для включения поддержки trivy sudo ./install.sh --with-trivy

🔎 Управление через web-панель

  • Идем по указанному в hostname адресу (192.168.1.135 в моем случае).

По умолчанию администратор admin:Harbor12345 - не забываем поменять пароль при первом входе.

Организация собственного реестра Docker образов с помощью Harbor
  • Здесь нам доступны проекты, репозитории, настройки доступов и политик хранения, а также подключенные сканеры с автоматической проверкой загружаемых образов. Интерфейс интуитивно понятен, подсказки имеются.
  • Проект в Harbor - это отдельное пространство со своими конфигурациями, правилами и политиками - все, что необходимо для грамотного распределения ответственности между разными командами и/или сервисами.
Организация собственного реестра Docker образов с помощью Harbor
  • На странице проекта также генерируются подсказки по отправке образов в репозиторий этого проекта
# Пометить образ для этого проекта docker tag SOURCE_IMAGE[:TAG] 192.168.1.135/desoft_ru/REPOSITORY[:TAG] # Отправить образ в этот проект docker push 192.168.1.135/desoft_ru/REPOSITORY[:TAG]

🎈 Таким образом, получаем удобную и функциональную площадку для организации работы с образами без зависимости от внешних сервисов, что не только обезопасит от внезапного ограничения доступа к публичным хранилищам, но и повысит скорость развертывания, защитит от утечек и несанкционированного доступа.

Организация собственного реестра Docker образов с помощью Harbor
Организация собственного реестра Docker образов с помощью Harbor

Больше полезной информации в моем Telegram-канале.

Начать дискуссию