Гид по технологиям

Как опубликовать Docker‑образ в Docker Registry

5 min read Контейнеры Обновлено 25 Dec 2025
Как опубликовать Docker‑образ в Docker Registry
Как опубликовать Docker‑образ в Docker Registry

Оригами‑лодка из оранжевой бумаги

Что такое Docker Registry

Docker Registry — это система хранения и распространения Docker‑образов. Каждый образ может иметь несколько версий, отличающихся тегами. Реестр позволяет пользователям загружать (pull) и отправлять (push) образы, обеспечивая онлайн‑копию приложения и способ делиться им с другими.

Короткое определение: Docker Registry — удалённое хранилище Docker‑образов с поддержкой тегов, прав доступа и метаданных.

Почему стоит использовать Docker Registry

Docker Hub — самый распространённый публичный реестр. Это продукт компании Docker, который поддерживает публичные и приватные репозитории, автоматические сборки и интеграцию с системами контроля версий. Docker Engine по умолчанию взаимодействует с Docker Hub, а CI/CD‑процессы легко настраиваются для автоматической публикации образов.

Важно: публичные репозитории доступны всем, приватные — по доступу. Docker Hub даёт один бесплатный приватный репозиторий и множество публичных.

Быстрая проверка перед началом

Перед операцией убедитесь, что на локальной машине установлены:

  • Docker CLI (версия совместима с вашим окружением)
  • Учётная запись на Docker Hub
  • Доступ в интернет и достаточное место на диске для образа

Создание аккаунта и репозитория на Docker Hub

  1. Перейдите на сайт Docker Hub и зарегистрируйте аккаунт.

Страница регистрации Docker Hub

  1. После входа нажмите «Create repository», укажите Name и Description и выберите Public или Private.

Внутри нового аккаунта Docker

Совет: используйте короткие имена репозиториев в формате username/repo, например myuser/myapp.

Создание репозитория на Docker Hub

Шаг 1 — скачать тестовый образ (pull)

Для проверки можно скачать официальный образ Ubuntu:

# Скачиваем официальный образ Ubuntu
docker pull ubuntu

Это официальный образ, удобный для теста. Далее мы подготовим и отправим его в свой репозиторий.

Шаг 2 — пометить образ (tag)

Перед отправкой образа в удалённый репозиторий локальный образ должен иметь имя в формате registry/namespace/repo:tag. Для Docker Hub достаточно username/repo:tag.

Пример команды:

# Переименование (tag) локального образа
docker tag ubuntu:latest sandra35/testrepo:latest

После выполнения вы должны увидеть новый тег среди локальных образов:

docker images
# Вывод покажет sandra35/testrepo:latest

Шаг 3 — отправка образа (push)

Отправьте помеченный образ в реестр командой:

docker push sandra35/testrepo:latest

Успешная загрузка выглядит как список слоёв, отправленных на сервер. После завершения обновите страницу репозитория в браузере — образ появится в списке.

Инструкции репозитория по загрузке образа

Успешная отправка в реестр

Появление образа в Docker Hub

Поздравляем — образ размещён в Docker Registry. Теперь любой, у кого есть доступ, может выполнить docker pull вашего образа.

Проверка и отладка

Если образ не виден в Docker Hub:

  • Убедитесь, что вы вошли в Docker CLI: docker login
  • Проверьте правильность тега и имени репозитория
  • Убедитесь, что push завершился без ошибок (сетевая ошибка, auth error)

Важно: если репозиторий приватный, другие пользователи должны иметь права доступа или использовать docker login перед pull.

Типичные ошибки и как их исправлять

  • Ошибка «unauthorized: authentication required»: выполните docker login и повторите push.
  • Ошибка «name unknown»: проверьте формат имени — должно быть username/repo:tag.
  • Сетевые тайм‑аута: повторите команду или проверьте интернет/прокси.

Рекомендации по безопасности

  • Приватные образы используйте для закрытых приложений. Ограничьте доступ по командам команды или организациям.
  • Никогда не включайте секреты (ключи, пароли) прямо в Dockerfile. Используйте секреты CI/CD или Docker Secrets.
  • Используйте подписывание образов и сканирование уязвимостей (Docker Hub и сторонние инструменты).

Модель мышления: что происходит при push

  1. CLI сравнивает локальные слои образа с теми, что уже есть в реестре.
  2. Загружаются только отсутствующие слои — это экономит трафик.
  3. После загрузки слоёв реестр обновляет метаданные и привязывает тег к набору слоёв.

Эта модель помогает понять, почему повторный push того же образа часто идёт быстро.

Критерии приёмки

  • Образ доступен через docker pull username/repo:tag
  • Тег указан корректно и соответствует версии приложения
  • Для приватных репозиториев права доступа настроены
  • CI/CD собирает и публикует образ по требуемому триггеру

Чек‑лист перед публикацией

  • Выполнен docker login
  • Образ успешно протестирован локально
  • Образ промечен (docker tag) в формате username/repo:tag
  • Размер образа оптимизирован (меньше — лучше)
  • Нет секретов в образе
  • Права доступа к репозиторию настроены

Мини‑методология для CI/CD

  1. Собирать образ в чистом окружении.
  2. Прогонять тесты и сканирование уязвимостей.
  3. Пропустить сборку, если тесты не пройдены.
  4. Присвоить семантический тег (например, vX.Y.Z или sha‑хеш).
  5. Выполнить docker push и оповестить команду.

SOP: Быстрая инструкция для разработчика

  1. docker pull base_image
  2. Собрать образ: docker build -t myapp:dev .
  3. Протестировать локально
  4. docker tag myapp:dev username/repo:tag
  5. docker login
  6. docker push username/repo:tag
  7. Проверить в Docker Hub

Диаграмма принятия решения (Mermaid)

flowchart TD
  A[Начать] --> B{Есть Docker Hub аккаунт?}
  B -- Да --> C{Создан репозиторий?}
  B -- Нет --> D[Зарегистрироваться на Docker Hub]
  D --> C
  C -- Нет --> E[Создать репозиторий]
  C -- Да --> F[Подготовить локальный образ]
  F --> G[docker tag]
  G --> H[docker login]
  H --> I[docker push]
  I --> J[Проверить репозиторий]
  J --> K[Готово]

Кому это полезно

  • Разработчикам, которые хотят публиковать образы для тестирования
  • DevOps‑инженерам, настраивающим CI/CD
  • Командам, распределяющим контейнерные приложения между средами

Когда этот подход не сработает

  • Если требуется локальный приватный реестр (требуется self‑hosted registry)
  • При очень строгих политик безопасности (нужны дополнительные механизмы подписи и контроля)

Альтернатива: использовать self‑hosted registry (например, Harbor или собственного Docker Registry) для полного контроля над данными.

Краткое резюме

Docker Registry (например, Docker Hub) — стандартный способ хранения и распространения Docker‑образов. Процесс публикации включает регистрацию, создание репозитория, пометку образа (tag) и отправку (push). Следуйте чек‑листу и практикам безопасности, чтобы избежать утечек секретов и проблем с доступом.

Важное: размеры образов влияют на время загрузки и стоимость трафика. Оптимизируйте слои и удаляйте ненужные зависимости.

Глоссарий (одно предложение)

  • Образ: упакованная файловая система приложения и его зависимости.
  • Тег: читаемое имя версии образа (например, latest или v1.0.0).
  • Репозиторий: коллекция образов с разными тегами.
  • Push: отправка образа в реестр.
  • Pull: загрузка образа из реестра.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Проверка версии Python на Windows, Mac и Linux
Программирование

Проверка версии Python на Windows, Mac и Linux

Режим планшета Windows 10: включение и настройка
Windows

Режим планшета Windows 10: включение и настройка

Освободить память в Windows через Диспетчер задач
Windows

Освободить память в Windows через Диспетчер задач

Организация учебных материалов в Delicious
Образование

Организация учебных материалов в Delicious

Как организовать каталог Lightroom
Фотография

Как организовать каталог Lightroom

Как открыть таблицу символов в Windows 11
Windows

Как открыть таблицу символов в Windows 11