Автор: Оганесян Микаэль, backend-developer

В этой статье я расскажу, как создать, тэгировать и загружать Docker-образ в приватный Docker Registry, используя Key ID и Key Secret. Также рассмотрим, как скачать образ с Registry на целевой сервер.


Предпосылки

Перед началом убедитесь, что у вас есть:

  • Установленный и настроенный Docker на локальной машине.

  • Доступ к серверу с установленным Docker Registry и интерфейсом управления.

  • Установленный и настроенный Docker на сервере, с которого будете скачивать образ.

  • Доступ в интернет или настроенная сеть между сервером и Docker Registry.

Шаги процесса

  1. Создание Registry в интерфейсе сервера

  2. Создание Docker-образа локально

  3. Авторизация в Docker под аккаунтом Registry

  4. Присвоение тега Docker-образу

  5. Загрузка Docker-образа в Registry

  6. Скачивание образа с Registry на целевой сервер


Официальные документы для справки


Шаг 1: Создание Registry в интерфейсе сервера

  1. Войдите в интерфейс управления вашим Docker Registry.

  2. Перейдите в раздел Registries или Repositories.

  3. Создайте новый Registry.

  4. При создании укажите имя (host) Registry — оно будет использоваться как {registry+host} в командах.

  5. Сгенерируйте 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, собрать и загрузить в него образ, а также скачать и запустить его на другом сервере. Такой подход помогает централизованно управлять образами и безопасно распространять их внутри вашей инфраструктуры.

Комментарии (0)