Container Registry в России: где хранить Docker-образы для CI/CD пайплайна
Selectel CR, Timeweb Registry, GitLab встроенный или свой Harbor — разбираемся, что удобнее и дешевле.
Container Registry — это приватное хранилище Docker-образов, из которого ваши серверы скачивают контейнеры при деплое. В России можно использовать managed registry от Selectel (от 100 ₽/ГБ/мес, интеграция с MKS), встроенный GitLab Container Registry (бесплатно при наличии GitLab) или развернуть свой Harbor на VPS. Docker Hub ненадёжен из-за периодических ограничений для российских IP.
- После ограничений Docker Hub для российских IP иметь свой registry стало не опцией, а необходимостью.
- Selectel Container Registry интегрирован с их managed K8s — образ подтягивается в pod без танцев с авторизацией.
- Для небольших команд GitLab Container Registry в комплекте с GitLab CI — самый удобный вариант.
- Self-hosted Harbor на VPS — бесплатно, но требует настройки TLS, сканера уязвимостей и мониторинга.
Почему Docker Hub уже не вариант для продакшна в РФ
С 2024 года Docker Hub периодически ограничивает доступ для российских IP-адресов. Даже если сегодня pull работает — завтра при деплое ваш Kubernetes может не скачать образ, и сервис ляжет. Для pet-проектов это неприятность, для коммерческих систем — катастрофа.
Решение простое: храните образы у себя. Либо в managed registry провайдера, либо в своём Harbor на VPS. Разовая настройка на полчаса — и вы больше не зависите от капризов чужих серверов.
Пример CI/CD пайплайна с приватным registry
Вот типичный сценарий: разработчик пушит код в GitLab, CI-пайплайн собирает Docker-образ, загружает его в приватный registry и обновляет деплой в Kubernetes. Весь путь от коммита до обновления на продакшне — 3 минуты.
# Пример пайплайна: сборка образа → push в registry → деплой
stages:
- build
- deploy
build:
stage: build
script:
- docker build -t cr.selcloud.ru/my-project/app:$CI_COMMIT_SHA .
- docker push cr.selcloud.ru/my-project/app:$CI_COMMIT_SHA
deploy:
stage: deploy
script:
- kubectl set image deployment/app app=cr.selcloud.ru/my-project/app:$CI_COMMIT_SHA
- kubectl rollout status deployment/appПроверенные серверы от надежных провайдеров
Timeweb Cloud
Cloud Start
CPU
1 ядер • 3.3 ГГц
RAM
1 ГБ
Диск
15 ГБ NVMe
Канал
200 Мбит/с
299 ₽/мес
Timeweb Cloud
Cloud Basic
CPU
2 ядер • 3.3 ГГц
RAM
2 ГБ
Диск
40 ГБ NVMe
Канал
200 Мбит/с
499 ₽/мес
Selectel
Cloud Lite 1
CPU
1 ядер • 2.6 ГГц
RAM
1 ГБ
Диск
10 ГБ SSD
Канал
200 Мбит/с
550 ₽/мес
Часто задаваемые вопросы (FAQ)
Сколько стоит хранение образов в managed registry?
У Selectel — от 100 ₽/ГБ в месяц. Для среднего проекта с 5–10 образами это выходит 200–500 ₽/мес. В GitLab — входит в тарифный план GitLab SaaS или бесплатно при self-hosted установке.
Можно ли использовать GitHub Container Registry (ghcr.io)?
Можно, если нет проблем с доступностью. Для open-source проектов ghcr.io бесплатен и работает стабильнее Docker Hub. Но для продакшна в РФ иметь локальный registry всё равно безопаснее.