Автор: Оганесян Микаэль, backend-developer
В этой статье я расскажу, как создать, тэгировать и загружать Docker-образ в приватный Docker Registry, используя Key ID и Key Secret. Также рассмотрим, как скачать образ с Registry на целевой сервер.
Предпосылки
Перед началом убедитесь, что у вас есть:
Установленный и настроенный Docker на локальной машине.
Доступ к серверу с установленным Docker Registry и интерфейсом управления.
Установленный и настроенный Docker на сервере, с которого будете скачивать образ.
Доступ в интернет или настроенная сеть между сервером и Docker Registry.
Шаги процесса
Создание Registry в интерфейсе сервера
Создание Docker-образа локально
Авторизация в Docker под аккаунтом Registry
Присвоение тега Docker-образу
Загрузка Docker-образа в Registry
Скачивание образа с Registry на целевой сервер
Официальные документы для справки
Шаг 1: Создание Registry в интерфейсе сервера
Войдите в интерфейс управления вашим Docker Registry.
Перейдите в раздел Registries или Repositories.
Создайте новый Registry.
При создании укажите имя (host) Registry — оно будет использоваться как {registry+host} в командах.
Сгенерируйте Key ID и Key Secret для доступа к Registry. Сохраните их в безопасном месте — Key Secret нельзя передавать третьим лицам!
> Пример для Yandex Cloud:
> Вместо {registry+host} используется имя Registry в формате:
> cr.yandex/<идентификатор_облака>/<имя_registry>, например:
> cr.yandex/b1g234hg76klop1234/my-private-registry.
> Авторизация происходит через IAM-токены или сервисные аккаунты, а не через обычный docker login с паролем.
Шаг 2: Создание Docker-образа локально
Используйте Dockerfile для сборки образа:
docker build -t {image}:{tag} .
{image} — имя образа (например, my-app)
{tag} — тег (например, latest, 1.0, dev)
. — текущая директория с Dockerfile
Пример:
docker build -t my-app:latest .
Рекомендации:
Используйте понятные теги.
Размещайте Dockerfile в корне проекта.
Создайте .dockerignore для исключения лишних файлов из контекста сборки.
Шаг 3: Авторизация в Docker под аккаунтом Registry
Выполните вход в Registry с помощью Key ID и Key Secret:
docker login {registry+host} -u {keyid} -p {password}
{registry+host} — адрес Registry (например, registry.example.com)
{keyid} — Key ID
{password} — Key Secret
Пример:
docker login registry.example.com -u my-registry-key -p my-registry-secret
Внимание: Docker сохранит учетные данные в ~/.docker/config.json. Убедитесь, что файл защищён.
Шаг 4: Присвоение тега Docker-образу
Чтобы загрузить образ в Registry, нужно присвоить ему тег с именем Registry и репозитория:
docker tag {image}:{tag} {registry+host}/{repository_name}:{tag}
{image}:{tag} — локальный образ (например, my-app:latest)
{registry+host} — адрес Registry
{repository_name} — имя репозитория (например, my-project)
{tag} — тег образа
Пример:
docker tag my-app:latest registry.example.com/my-project/my-app:latest
Шаг 5: Загрузка Docker-образа в Registry
Отправьте образ в Registry:
docker push {registry+host}/{repository_name}:{tag}
Пример:
docker push registry.example.com/my-project/my-app:latest
Шаг 6: Скачивание образа с Registry на целевой сервер
1. Авторизуйтесь на целевом сервере в Registry:
docker login {registry+host} -u {keyid} -p {password}
2. Скачайте образ:
docker pull {registry+host}/{repository_name}:{tag}
3.Запустите контейнер из образа:
docker run -d --name my-app-container {registry+host}/{repository_name}:{tag}
▌Заключение
Теперь вы знаете, как создать приватный Docker Registry, собрать и загрузить в него образ, а также скачать и запустить его на другом сервере. Такой подход помогает централизованно управлять образами и безопасно распространять их внутри вашей инфраструктуры.