Организация собственного реестра 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 части на сайте.
⚒ Установка
🔹 Скачиваем актуальную версию из релизов и распаковываем архив
🔹 Вносим правки в конфигурационный файл harbor.yml
🔹 Запускаем установочный скрипт
🔎 Управление через web-панель
- Идем по указанному в hostname адресу (192.168.1.135 в моем случае).
По умолчанию администратор admin:Harbor12345 - не забываем поменять пароль при первом входе.
- Здесь нам доступны проекты, репозитории, настройки доступов и политик хранения, а также подключенные сканеры с автоматической проверкой загружаемых образов. Интерфейс интуитивно понятен, подсказки имеются.
- Проект в Harbor - это отдельное пространство со своими конфигурациями, правилами и политиками - все, что необходимо для грамотного распределения ответственности между разными командами и/или сервисами.
- На странице проекта также генерируются подсказки по отправке образов в репозиторий этого проекта
🎈 Таким образом, получаем удобную и функциональную площадку для организации работы с образами без зависимости от внешних сервисов, что не только обезопасит от внезапного ограничения доступа к публичным хранилищам, но и повысит скорость развертывания, защитит от утечек и несанкционированного доступа.
Больше полезной информации в моем Telegram-канале.