Linux

Настройка приватного Docker Registry на Linux: пошаговое руководство

В этом руководстве вы узнаете, как установить и настроить приватный Docker Registry на Linux, ограничить доступ и проверить работу репозитория.

Обновлено 3 августа 2026 г.
10-15 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 20.04Ubuntu 22.04Debian 11CentOS 8Fedora 35

Введение

Приватный Docker Registry позволяет хранить ваши Docker-образы внутри корпоративной сети или облака, сохраняя конфиденциальность и ускоряя доставку. В этом руководстве показано, как быстро развернуть легковесный реестр на базе образа registry:2 на серверах под управлением Linux, защитить его паролями и опционально настроить TLS.

Требования

  • Система под управлением Linux (Ubuntu 20.04+, Debian 11, CentOS 8, Fedora 35).
  • Права суперпользователя (root), либо настроенная sudo-поддержка.
  • Установленный Docker (>= 20.10).
  • Свободный порт 5000 для HTTP или 443 для HTTPS.
  • Базовые утилиты: curl, openssl, htpasswd (из apache2-utils).

Настройка приватного реестра

Шаг 1: Установка Docker

На Debian/Ubuntu:

apt update
apt install -y docker.io

На RHEL/CentOS/Fedora:

yum install -y docker

Проверьте версию:

docker --version

Шаг 2: Запуск контейнера registry

Создайте отдельную сеть для реестра:

docker network create registry-net

Запустите официальный контейнер:

docker run -d \
  --restart=always \
  --network=registry-net \
  -p 5000:5000 \
  --name registry \
  registry:2

Проверьте, что контейнер работает:

docker logs registry

Шаг 3: Настройка базовой аутентификации

Сгенерируйте хеш пароля:

htpasswd -nbB 12345 user | tr -d '\r'

Добавьте хеш в файл .htpasswd (создайте его предварительно):

mkdir -p /opt/registry
echo "user:<generated_hash>" > /opt/registry/.htpasswd

Запустите реестр заново, подключив файл аутентификации:

docker stop registry
docker run -d \
  --restart=always \
  --network=registry-net \
  -p 5000:5000 \
  -e REGISTRY_AUTH=htpasswd \
  -e REGISTRY_HTPASSWD=/opt/registry/.htpasswd \
  --name registry \
  registry:2

💡 Совет: Для управления несколькими пользователями используйте скрипт, который добавляет записи в .htpasswd при каждом изменении паролей.

Шаг 4: Настройка TLS/HTTPS (необязательно)

Сгенерируйте самоподписанный сертификат:

openssl req -new -newkey rsa:4096 -days 365 -nodes \
  -x509 -subj "/CN=registry.example.com" \
  -keyout /opt/registry/registry.key \
  -out /opt/registry/registry.crt

Запустите реестр с TLS:

docker stop registry
docker run -d \
  --restart=always \
  --network=registry-net \
  -p 5000:5000 \
  -p 443:443 \
  -e REGISTRY_AUTH=htpasswd \
  -e REGISTRY_HTPASSWD=/opt/registry/.htpasswd \
  -v /opt/registry/registry.crt:/etc/docker/registry/certs/registry.crt \
  -v /opt/registry/registry.key:/etc/docker/registry/certs/registry.key \
  --name registry \
  registry:2

⚠️ Важно: Для продакшена используйте сертификаты, выданные доверенным CA.

Шаг 5: Проверка работоспособности

Выполните вход в реестр:

docker login localhost:5000

Попробуйте скачать публичный образ:

docker pull hello-world
docker tag hello-world localhost:5000/hello-world
docker push localhost:5000/hello-world

Проверьте каталог через curl:

curl -u user:password http://localhost:5000/v2/_catalog

Проверка результата

Если команды выше завершились без ошибок, реестр готов к использованию. Вы можете проверить доступность через браузер (или curl), используя URL http://localhost:5000/v2/_catalog. Для HTTPS используйте https://localhost:443/v2/_catalog.

Возможные проблемы

  • Ошибка подключения: Убедитесь, что порт 5000 открыт и Docker может подключаться к сети.
  • Ошибка аутентификации: Проверьте хеш в .htpasswd (htpasswd -vb /opt/registry/.htpasswd user).
  • TLS-ошибки: Убедитесь, что сертификат установлен корректно (docker logs registry) и браузер доверяет CA.
  • Низкая производительность: Рассмотрите возможность использования TLS-интерфейса с хост-сетью или размещения реестра на выделенном сервере.

С этим вы полностью настроили приватный Docker Registry на Linux и можете безопасно хранить и распространять свои контейнерные образы.

Часто задаваемые вопросы

Какой Docker-образ используется для приватного реестра?
Нужно ли использовать TLS для безопасности?
Как проверить, что реестр работает?
Как ограничить доступ к реестру?

Полезное

Установка Docker на систему
Запуск контейнера registry
Настройка базовой аутентификации
Настройка TLS/HTTPS (необязательно)
Проверка работоспособности

Эта статья помогла вам решить проблему?