- Home »

Настройка приватного Docker Registry на Ubuntu 24.04
Сегодня разберёмся, как развернуть приватный Docker Registry на свежайшей Ubuntu 24.04. Почему это важно? Потому что хранить свои образы на чужих серверах — это как отдавать ключи от квартиры случайному прохожему. Свой реестр — это контроль, безопасность, скорость и, конечно, экономия. В статье расскажу, как быстро и без боли поднять приватный реестр, какие подводные камни встретятся, и как их обойти. Будет много практики, примеры из жизни, схемы, лайфхаки и даже немного статистики. Если ты когда-нибудь думал: «А не пора ли мне свой Docker Registry?», — этот гайд для тебя.
Как это работает? Кратко и по делу
Docker Registry — это сервис для хранения и распространения Docker-образов. По сути, это аналог Docker Hub, только у тебя под контролем. Ты пушишь образы, ты их забираешь, ты решаешь, кто к ним имеет доступ. Вся магия крутится вокруг официального образа registry — это и есть тот самый сервер, который можно быстро поднять у себя.
- Преимущества: приватность, скорость (особенно если сервер рядом), отсутствие лимитов на трафик и хранение, гибкая интеграция с CI/CD.
- Недостатки: нужно самому следить за безопасностью, обновлениями, резервными копиями.
В реальной жизни это выглядит так: ты собираешь образ, пушишь его в свой реестр, а потом деплоишь на любые свои сервера, не боясь, что кто-то его увидит или что-нибудь удалит.
Быстрый старт: настройка приватного Docker Registry на Ubuntu 24.04
Погнали по шагам. Всё делается за 15 минут, если не отвлекаться на мемы.
- Готовим сервер
- Нужен VPS или выделенный сервер с Ubuntu 24.04. Можно взять тут: VPS или выделенный сервер.
- Желательно выделить отдельный диск или раздел под образы (Docker Registry любит место).
- Устанавливаем Docker
Если ещё не стоит, ставим по классике:
sudo apt update
sudo apt install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl enable --now docker
- Запускаем приватный реестр
Самый простой способ — через Docker:
sudo docker run -d --restart=always --name registry -p 5000:5000 -v /opt/registry/data:/var/lib/registry registry:2
- -p 5000:5000 — реестр будет слушать порт 5000 (можно поменять).
- -v /opt/registry/data:/var/lib/registry — храним образы на диске сервера.
- Добавляем базовую аутентификацию (рекомендуется!)
Голый реестр — это плохо. Делаем .htpasswd:
sudo apt install -y apache2-utils
sudo mkdir -p /opt/registry/auth
sudo htpasswd -Bbn myuser mypassword > /opt/registry/auth/htpasswd
Теперь перезапускаем реестр с авторизацией:
sudo docker stop registry
sudo docker rm registry
sudo docker run -d --restart=always --name registry -p 5000:5000 \
-v /opt/registry/data:/var/lib/registry \
-v /opt/registry/auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
registry:2
- Настраиваем SSL (Let’s Encrypt + Nginx)
Без HTTPS Docker не даст пушить образы. Быстро ставим Nginx и сертификат:
sudo apt install -y nginx certbot python3-certbot-nginx
sudo nano /etc/nginx/sites-available/registry
Пример конфига:
server {
listen 443 ssl;
server_name registry.example.com;ssl_certificate /etc/letsencrypt/live/registry.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/registry.example.com/privkey.pem;location / {
proxy_pass http://localhost:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Активируем сайт и получаем сертификат:
sudo ln -s /etc/nginx/sites-available/registry /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d registry.example.com
Теперь реестр доступен по HTTPS!
- Пушим и пуллим образы
Логинимся и работаем:
docker login registry.example.com
docker tag myimage:latest registry.example.com/myimage:latest
docker push registry.example.com/myimage:latest
docker pull registry.example.com/myimage:latest
Практические советы и схемы
- Бэкапы: Регулярно копируй /opt/registry/data. Лучше автоматизировать через cron + rsync.
- Мониторинг: Используй Prometheus + Grafana для отслеживания состояния реестра.
- Чистка старых образов: Встроенной автоматической чистки нет. Используй registry-cleaner или docker-registry-cli.
- Сеть: Если реестр только для внутренней сети — закрой порт 5000 наружу, оставь только 443.
- CI/CD: Интегрируй реестр в свои пайплайны (GitLab CI, Jenkins, GitHub Actions) — это ускоряет деплой и уменьшает зависимость от внешних сервисов.
Положительные и отрицательные кейсы
Кейс | Плюсы | Минусы | Рекомендации |
---|---|---|---|
Маленькая команда, 1-2 сервера | Просто, быстро, дешево | Нет масштабирования, ручное управление | Держать бэкапы, не забывать обновлять Docker |
Большая компания, много серверов | Гибкость, контроль, интеграция с LDAP | Сложная настройка, нужны DevOps-ресурсы | Использовать Harbor или Quay для продвинутых фич |
Публичный реестр для open-source | Свобода, независимость от Docker Hub | Трафик, DDoS, спам | Ограничить доступ, мониторить логи |
CI/CD пайплайны | Молниеносная доставка образов, нет rate limit | Нужно следить за безопасностью | Использовать отдельный реестр для тестов и продакшена |
Альтернативы и похожие решения
- Harbor — enterprise-уровень, поддержка ролей, сканирование уязвимостей, UI. goharbor.io
- Quay — от Red Hat, тоже с UI и расширенными фичами. quay.io
- GitLab Container Registry — если у тебя уже есть GitLab, можно не городить отдельный реестр.
- Amazon ECR, Google Artifact Registry, Azure Container Registry — облачные решения, но тут уже платишь за каждый чих.
Если нужен просто приватный реестр без UI и лишних наворотов — стандартный Docker Registry идеален. Если хочется больше контроля, UI, RBAC — смотри в сторону Harbor.
Статистика и сравнение
Решение | Сложность установки | Функционал | Ресурсы | Стоимость |
---|---|---|---|---|
Docker Registry | Минимальная | Базовый | CPU/RAM: 1/1GB | Только сервер |
Harbor | Средняя | Расширенный | CPU/RAM: 2+/4GB+ | Только сервер |
GitLab Registry | Средняя | Интеграция с GitLab | CPU/RAM: 2+/4GB+ | Только сервер |
Облачные (ECR, GCR, ACR) | Минимальная | Расширенный | Нет требований | Платно за хранение/трафик |
Интересные факты и нестандартные способы использования
- Можно использовать реестр для хранения не только Docker-образов, но и Helm-чартов (через Harbor).
- Свой реестр — отличный способ ускорить деплой в Kubernetes-кластере (особенно если кластеры в разных регионах).
- Можно поднять несколько реестров для разных окружений (dev, staging, prod) и разграничить доступ.
- Скрипты для автоматической чистки старых образов экономят десятки гигабайт места.
- Можно интегрировать реестр с LDAP или OAuth для централизованной аутентификации (через Harbor).
- Реестр можно использовать как кэш для публичных образов, чтобы не тянуть их каждый раз из Docker Hub (особенно актуально при rate limit).
Автоматизация и новые возможности
- Свой реестр легко интегрируется в пайплайны CI/CD: push/pull образы без задержек и rate limit.
- Можно автоматизировать очистку старых тегов и образов через cron + скрипты.
- С помощью webhooks можно запускать деплой на серверах сразу после пуша нового образа.
- Возможность быстро откатываться на предыдущие версии образов (если хранишь теги).
- Гибкая настройка прав доступа: кто может пушить, кто только пуллить.
Выводы и рекомендации
Свой приватный Docker Registry — это must-have для любого, кто серьёзно работает с контейнерами. Это не только безопасность и независимость, но и скорость, гибкость, удобство автоматизации. На Ubuntu 24.04 всё ставится за 15 минут, а дальше — только не забывай про бэкапы и обновления. Для маленьких команд хватит стандартного Docker Registry, для больших — смотри в сторону Harbor или Quay. Не бойся экспериментировать: свой реестр — это не страшно, а круто. Если нужен сервер под реестр — смотри VPS или выделенный сервер. Удачной автоматизации и быстрых деплоев!
Официальная документация:
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.