Home » Настройка приватного Docker Registry на Ubuntu 24.04
Настройка приватного Docker Registry на Ubuntu 24.04

Настройка приватного 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 минут, если не отвлекаться на мемы.

  1. Готовим сервер
    • Нужен VPS или выделенный сервер с Ubuntu 24.04. Можно взять тут: VPS или выделенный сервер.
    • Желательно выделить отдельный диск или раздел под образы (Docker Registry любит место).
  2. Устанавливаем 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

  3. Запускаем приватный реестр

    Самый простой способ — через 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 — храним образы на диске сервера.
  4. Добавляем базовую аутентификацию (рекомендуется!)

    Голый реестр — это плохо. Делаем .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

  5. Настраиваем 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!

  6. Пушим и пуллим образы

    Логинимся и работаем:


    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 или выделенный сервер. Удачной автоматизации и быстрых деплоев!

Официальная документация:


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked