Организация собственного реестра 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 части на сайте.
⚒️ Установка
🔹 Скачиваем актуальную версию из релизов и распаковываем архив
1
2
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
1
2
3
cd harbor
cp harbor.yml.tmpl harbor.yml
vi harbor.yml
1
2
3
4
5
6
7
8
9
# поднимаю на домашней виртуалке, поэтому без 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
🔹 Запускаем установочный скрипт
1
2
# + опция для включения поддержки trivy
sudo ./install.sh --with-trivy
🔎 Управление через web-панель
- Идем по указанному в hostname адресу (192.168.1.135 в моем случае).
По умолчанию администратор admin:Harbor12345 - не забываем поменять пароль при первом входе.
-
Здесь нам доступны проекты, репозитории, настройки доступов и политик хранения, а также подключенные сканеры с автоматической проверкой загружаемых образов. Интерфейс интуитивно понятен, подсказки имеются.
-
Проект в Harbor - это отдельное пространство со своими конфигурациями, правилами и политиками - все, что необходимо для грамотного распределения ответственности между разными командами и/или сервисами.
- На странице проекта также генерируются подсказки по отправке образов в репозиторий этого проекта
1
2
3
4
5
# Пометить образ для этого проекта
docker tag SOURCE_IMAGE[:TAG] 192.168.1.135/desoft_ru/REPOSITORY[:TAG]
# Отправить образ в этот проект
docker push 192.168.1.135/desoft_ru/REPOSITORY[:TAG]
🎈 Таким образом, получаем удобную и функциональную площадку для организации работы с образами без зависимости от внешних сервисов, что не только обезопасит от внезапного ограничения доступа к публичным хранилищам, но и повысит скорость развертывания, защитит от утечек и несанкционированного доступа.




