По мере нарастания использования платформ контейнеризации многие команды начинают задумываться о необходимости собственного реестра контейнеров как альтернативы Docker Hub, и одним из решений в таком случае может стать Harbor – cloud-native проект для хранения и распространения образов контейнеров. Harbor можно использовать, например, для настройки оповещений в Telegram, в качестве части CI/CD-цикла и совместно с Helm, менеджером пакетов для Kubernetes.
В этой статье расскажем, как установить Harbor и выполнить первичную настройку.
Системные требования
Для установки Harbor потребуется сервер с установленными docker, docker-compose и openssl. В данном случае хорошо подойдет готовое решение Docker на VPS – в нем данное ПО предустановлено. Также для получения бесплатного сертификата потребуется доменное имя, в его А-записи должен быть указан IP-адрес сервера. Если вы хотите использовать объектное хранилище для хранения образов, его также потребуется создать в разделе “Облако”.
Минимальные требования для установки:
- CPU: 2 ядра
- RAM: 2 ГБ
- Дисковое пространство: 30 ГБ
Рекомендуемая конфигурация согласно документации:
- CPU: 4 ядра
- RAM: 8 ГБ
- Дисковое пространство: 160 ГБ
Также необходимо убедиться, что на сервере открыты порты 80, 443, 4443.
Как установить Harbor с хранением образов в объектном хранилище
Для установки этого реестра контейнеров Docker подключитесь к серверу по ssh, после чего создайте директорию под проект и перейдите в нее следующими командами:
mkdir /opt/harbor
cd /opt/harborЗагрузите архив с установщиком нужной версии, например:
wget https://github.com/goharbor/harbor/releases/download/v2.14.1/harbor-offline-installer-v2.14.1.tgzПосле чего распакуйте архив:
tar xf harbor-offline-installer-v2.14.1.tgz .
Получение SSL-сертификата
Для получения бесплатного сертификата SSL можно использовать Certbot. Для этого установите Certbot:
apt update
apt install certbotЗатем выпустите сертификат для доменного имени командой:
certbot certonly --standalone -d <доменное_имя>
Например, для betutorial.ru команда будет выглядеть следующим образом:
certbot certonly --standalone -d betutorial.ru
Завершение установки
Создайте копию файла harbor.yml.tmpl:
cp harbor.yml.tmpl harbor.ymlОткройте файл удобным вам текстовым редактором и измените:
hostname– укажите домен, используемый для реестра контейнеров, или IP-адрес сервера.passwordв разделеdatabase– здесь укажите пароль для базы данных Harbor.- В разделе
httpsизмените значениеcertificateна/etc/letsencrypt/live/your-domain.com/fullchain.pem, аprivate_key– на/etc/letsencrypt/live/your-domain.com/privkey.pem, гдеyour-domain.com– доменное имя, указывающее на сервер. - При необходимости раскомментируйте строки.
# internal_tls:
# # set enabled to true means internal tls is enabled
# enabled: true
Данная настройка включит работу по HTTPS между компонентами Harbor.
- Если вы хотите использовать объектное хранилище для файлов Harbor, добавьте блок следующего вида:
storage_service:
s3:
accesskey: <access key бакета>
secretkey: <secret key бакета>
region: ru1
regionendpoint: https://s3.ru1.storage.beget.cloud
bucket: <имя бакета>Access key, secret key и имя бакета вы можете найти в его карточке в панели управления:

Сохраните изменения в файле, после чего запустите установку командой:
./install.shВ случае успешной установки контейнеры будут запущены:
[+] up 10/10
✔ Network harbor_harbor Created 0.0s
✔ Container harbor-log Created 0.1s
✔ Container harbor-portal Created 0.1s
✔ Container redis Created 0.1s
✔ Container registry Created 0.1s
✔ Container registryctl Created 0.1s
✔ Container harbor-db Created 0.1s
✔ Container harbor-core Created 0.0s
✔ Container harbor-jobservice Created 0.0s
✔ Container nginx Created 0.1s
✔ ----Harbor has been installed and started successfully.----Первичная настройка
По завершении установки перейдите по адресу, указанному в конфигурации Harbor. Откроется страница авторизации:

Введите логин admin и первичный пароль – если вы его не изменяли в конфигурационном файле, это Harbor12345. После чего измените пароль администратора, нажав на имя пользователя в правом верхнем углу, и выберите "Change password":

В появившемся окне введите старый и новый пароли с подтверждением:

И нажмите “OK” для подтверждения.
Загрузка образа в Harbor
Для загрузки образа контейнера в реестр потребуется сначала авторизоваться:
docker login <адрес harbor>
Например, для Harbor, развернутого на домене harbor.betutorial.ru, команда будет выглядеть так:
docker login harbor.betutorial.ru
Введите имя пользователя и пароль, в случае успешной авторизации будет показано соответствующее сообщение:
Username: admin
Password:
Login Succeeded!Чтобы загрузить образ в Harbor с помощью docker-cli, потребуется сначала создать соответствующий тег:
docker tag SOURCE_IMAGE[:TAG] адрес_harbor/library/REPOSITORY[:TAG]
После чего загрузить образ в реестр:
docker push адрес_harbor/library/REPOSITORY[:TAG]
Загруженный образ отобразится в проекте, в который загружался образ, проект по умолчанию – library:

Заключение
В данной статье мы кратко рассказали о Harbor – что это за решение, как выполнить его установку и первичную настройку. Подробнее о работе и управлении приложением вы можете прочитать в официальной документации.
Сегодня реестр для хранения Docker-образов Harbor популярен благодаря безопасности (RBAC, сканирование уязвимостей, подпись образов), удобной интеграции с Kubernetes и CI/CD.
Если возникнут вопросы, напишите нам, пожалуйста, тикет из панели управления аккаунта (раздел “Помощь и поддержка”), а если вы захотите обсудить Harbor, Docker или наши продукты с коллегами по цеху и сотрудниками Beget – ждем вас в нашем сообществе в Telegram.