Современные приложения часто используют контейнеры Docker, а образы для них берутся из облачных регистров, таких как Docker Hub, или других публичных источников. Однако зависимость от внешних сервисов может привести к сбоям из-за недоступности реестра. Для организации локального хранилища (registry) для Docker-образов можно использовать локальный Docker Registry. 
1. Запуск локального Docker Registry
Docker предоставляет официальный образ registry для создания локального реестра.
docker run -d -p 5000:5000 --name registry registry:2
- -d — запускает контейнер в фоновом режиме.
- -p 5000:5000 — пробрасывает порт 5000 (по умолчанию для registry).
- —name registry — имя контейнера.
- registry:2 — официальный образ Docker Registry.
Теперь локальный реестр доступен по адресу localhost:5000.
2. Настройка хранилища
По умолчанию образы хранятся в памяти контейнера. Для персистентного хранения добавьте том (volume):
docker run -d -p 5000:5000 --name registry -v registry-data:/var/lib/registry registry:2
-v registry-data:/var/lib/registry — монтирует том registry-data для хранения образов.
3. Работа с локальным реестром
Тегирование образа:
- Чтобы отправить образ в локальный реестр, его нужно пометить тегом с префиксом localhost:5000/.
 docker tag my-image:latest localhost:5000/my-image:latest
- Отправка образа в реестр:
 docker push localhost:5000/my-image:latest
- Получение образа из реестра:
 docker pull localhost:5000/my-image:latest
4. Настройка Docker для работы с локальным реестром
Если вы используете HTTPS или работаете на удалённой машине, убедитесь, что Docker настроен для работы с небезопасными реестрами (insecure registries). Добавьте в файл /etc/docker/daemon.json:
{
"insecure-registries": ["localhost:5000"]
}
Перезапустите Docker:
sudo systemctl restart docker
5. Дополнительные настройки (опционально)
Аутентификация: Для защиты реестра настройте HTTP-аутентификацию с помощью htpasswd:
docker run -d -p 5000:5000 --name registry \
-v $(pwd)/auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" registry:2
Создайте файл htpasswd с помощью команды:
htpasswd -Bc auth/htpasswd <username>
TLS: Для продакшн-среды настройте TLS-сертификаты, чтобы обеспечить безопасное соединение.
6. Проверка содержимого реестра
Для просмотра доступных образов используйте API реестра:
curl http://localhost:5000/v2/_catalog
Заключение
Зависимость от облачных регистров и публичных Docker-образов может стать слабым местом для сервиса, но правильные стратегии — локальный реестр, кэширование, собственные образы и отказоустойчивость — позволяют минимизировать риски. Настройка локального зеркала и использование приватных реестров дают контроль над инфраструктурой, а мониторинг и автоматизация обеспечивают стабильность. Эти шаги помогут избежать остановки сервиса даже в случае проблем с внешними ресурсами.
