Найти в Дзене
DeSoft.ru

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

Docker Container Registry - это сервер хранения и распространения образов Docker. Существует довольно много публичных реестров, такие как Docker Hub (по умолчанию), Amazon ECR, GitHub CR и так далее, но бесплатно распространять образы на подобных ресурсах можно только в открытом доступе. В платных опциях доступны приватные репозитории, однако, мы знаем примеры, когда доступ к удаленным серверам может внезапно “улетучиться” независимо от того, каким тарифом ты пользуешься. 💡 Нас же интересует вариант поднятия своего реестра в закрытом контуре, т.е. только для внутреннего использования. ✏️ Типовым решением является использование официального образа registry
- простой и быстрый способ создания хранилища. Работает исправно, свою
функцию выполняет, но для более гибкой настройки и управления существуют
альтернативные варианты. ⚡️ Harbor - это open source self-hosted система управления хранилищем Docker образов, написанная на Go. Trivy как-то упоминал в цикле про работу с образами в Doc
Оглавление

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 - не забываем поменять пароль при первом входе.

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

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

-4
-5

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