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

Как опубликовать 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
Автор
Редакция

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

Как отключить теги и включить проверку тегов в Facebook
Безопасность

Как отключить теги и включить проверку тегов в Facebook

Рансомваре процессора — как защититься
Кибербезопасность

Рансомваре процессора — как защититься

Bash на Windows 10 через WSL
Linux, Windows

Bash на Windows 10 через WSL

Признаки вредоносного ПО на Smart TV
Безопасность

Признаки вредоносного ПО на Smart TV

Мастер‑гид по Evernote: захват, организация, поиск
Продуктивность

Мастер‑гид по Evernote: захват, организация, поиск

Как превратить видео в таймлапс — шаги и советы
Видео

Как превратить видео в таймлапс — шаги и советы