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

Как поделиться Docker-образом

• 6 min read • Docker • Обновлено 26 Nov 2025
Как поделиться Docker-образом
Как поделиться Docker-образом

Docker-изображение, показывающее контейнер и слои образа

Быстрые ссылки

  • Использовать Docker-реестр

  • Экспорт образов

  • А что такое “docker export”?

  • Резюме

Построили Docker-образ и хотите передать его коллеге? Ниже — детальное руководство о том, как распространить уже собранный образ так, чтобы получателю не пришлось запускать

docker build

самому. Отправка готового образа вместо Dockerfile гарантирует, что коллега получит ту же самую среду и версии. Повторная сборка могла бы дать слегка отличающийся результат. В зависимости от задач у вас есть два основных варианта передачи.

Использовать Docker-реестр

Самый простой метод — загрузить образ в Docker-реестр. Docker CLI полностью поддерживает работу с реестром. При таком способе нет ручных переносов файлов между машинами.

По умолчанию используется Docker Hub. Он позволяет публиковать образы публично и предоставляет одну приватную репозиторию. Зарегистрируйтесь на Docker Hub и затем выполните в терминале:

docker login

Укажите учетные данные для подключения Docker CLI к вашей учётной записи.

Далее собирайте образ как обычно, добавив тег, который начинается с вашего имени пользователя Docker Hub:

docker build -t my-account/my-image:latest .

После этого используйте команду docker push, чтобы отправить помеченный образ в Docker Hub:

docker push my-account/my-image:latest

Теперь образ сохранён в Docker Hub. Остальные пользователи смогут загрузить его командой docker pull или запустить напрямую docker run.

Важно: для команд docker push и docker pull можно использовать любой совместимый реестр — например, приватный реестр вашей команды или облачный реестр провайдера. Если вы работаете в команде и не хотите хранить образы публично, создайте собственный self-hosted реестр или используйте корпоративный реестр. Они полностью совместимы с командами Docker и дают контроль доступа.

Важно: следите за правами доступа в реестре. Публичный образ виден всем, приватный — только тем, кто имеет доступ.

Когда выбирать реестр

  • Частая совместная работа над образом — используйте реестр.
  • Требуется CI/CD интеграция — реестр упрощает автоматические выкладки.
  • Нужен контроль доступа и аудит — корпоративные реестры лучше подходят.

Экспорт образов

Если реестр использовать нельзя, можно вручную экспортировать образ в архив. Docker CLI поддерживает и этот сценарий. После сборки образа используйте docker save, чтобы получить tar-архив с содержимым образа:

docker save my-image:latest > my-image.tar

Экспорт займёт некоторое время. Docker включит всё необходимое для воссоздания образа: все слои, указанные в Dockerfile, и слои базового образа. Архив также содержит данные о тегах.

Поскольку результат — обычный tar-файл, вы можете распространять его любым удобным способом: через файловый сервер, облачное хранилище, переносной диск или SFTP. Архиы могут быть большими — обычно проще загрузить их в облако и дать ссылку, чем пересылать по почте.

Чтобы использовать экспортированный образ, примените docker load, который читает tar-архив из потока ввода и добавляет образ в локальные изображения:

docker load < my-image.tar

После выполнения вы увидите импортированный образ в выводе docker images. Теперь можно запускать контейнеры с помощью docker run.

Экспорт/импорт требует ручной передачи файла и поэтому менее удобен для системного или частого обмена, но полезен в ряде случаев:

  • Архивирование старых образов для экономии места в реестре.
  • Передача образа в сети без прямого доступа к реестру.
  • Отправка образа заказчику без публикации в общем хранилище.

Практические рекомендации при экспорте

  • Сжимайте архивы перед передачей (gzip, zstd) для сокращения трафика: docker save my-image:latest | gzip > my-image.tar.gz.
  • Для больших образов используйте облачное хранилище с большой пропускной способностью.
  • Проверяйте контрольные суммы перед и после передачи (например, sha256sum).

А что такое docker export?

Есть команда docker export, но её не стоит путать с docker save. docker save работает с образами, а docker export создаёт архив файловой системы конкретного контейнера.

docker export создаёт tar-архив корневой файловой системы контейнера — это снимок /bin, /etc, /usr и т.д. Он может быть полезен для создания реплики контейнера на другой машине.

docker export my-container > my-container.tar

Однако важно понимать ограничения: контейнер — это живое окружение, и экспортируемый архив не содержит метаданные образа (слои, история сборки, конфигурацию Dockerfile). При импорте такого архива создаётся новый образ, но он не равен исходному образу по метаданным и базовому слою:

docker import my-container.tar my-image:latest

Команда docker import возьмёт файловую систему из архива и создаст новый образ с тем же файловым содержимым, но без истории слоёв и инструкций Dockerfile. Также тома, которые были смонтированы в контейнере, в архив не попадут.

Когда использовать export/import

  • Нужен быстрый снимок работающего контейнера без истории сборки.
  • Вы хотите сохранить только файловую систему без метаданных.

Когда нужен точный и воспроизводимый образ, лучше использовать docker save/docker load или реестр.

Контрольный список перед отправкой образа

  • Убедиться, что образ работает локально и проходит тесты.
  • [ ] Прописать версию и теги (semver или latest по соглашению команды).
  • Очистить чувствительные данные и секреты из образа (ключи, пароли).
  • Проверить лицензии зависимостей и сторонних бинарников.
  • Сжать и проверить контрольную сумму при экспорте.
  • Обновить документацию: как запустить, какие переменные окружения нужны.

Команды-шпаргалка

  • Авторизация в реестре: docker login
  • Сборка с тегом: docker build -t my-account/my-image:latest .
  • Загрузка в реестр: docker push my-account/my-image:latest
  • Экспорт образа в tar: docker save my-image:latest > my-image.tar
  • Импорт образа из tar: docker load < my-image.tar
  • Экспорт контейнера: docker export my-container > my-container.tar
  • Импорт контейнера как образ: docker import my-container.tar my-image:latest

SOP — Быстрая инструкция отправки образа коллегам

  1. Соберите образ локально и прогоните тесты.
  2. Проставьте тег с версией и именем реестра/аккаунта.
  3. Если используете реестр: docker login → docker push.
  4. Если реестр недоступен: docker save my-image:tag | gzip > my-image.tar.gz и загрузите архив в облако.
  5. Сообщите ссылку и контрольную сумму получателю.
  6. Получатель выполняет docker load (или распаковывает и docker load < my-image.tar).

Decision flow — реестр или tar?

flowchart TD
  A[Нужно поделиться образом] --> B{Есть доступ к реестру?}
  B -- Да --> C[Использовать реестр: docker push]
  B -- Нет --> D{Файл слишком большой для передачи?}
  D -- Нет --> E[Экспорт: docker save -> передать архива]
  D -- Да --> F[Сжать и загрузить в облако -> docker load на стороне получателя]

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

  • Получатель успешно выполняет docker images и видит образ с ожидаемым тегом.
  • Контейнер запускается и проходит набор smoke-тестов (см. тест-кейсы ниже).
  • Никаких секретов в образе не обнаружено.

Тест-кейсы и критерии приемки

  1. Запуск контейнера: docker run --rm my-image:latest echo OK должен вывести OK.
  2. Проверка версии приложения внутри образа (если есть бинарник): docker run --rm my-image:latest app --version соответствует заявленной.
  3. Сетевые порты проброшены и приложение отвечает на запросы (если требуется).
  4. Переменные окружения корректно работают.

Риски и смягчения

  • Риск: утечка секретов через образ. Смягчение: перед отправкой удалить чувствительные файлы и переменные, использовать секреты runtime.
  • Риск: несовместимость базовых образов. Смягчение: описать базовый образ и версии в документации.
  • Риск: большой размер архива. Смягчение: оптимизировать Dockerfile, использовать многослойную сборку и сжатие архива.

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

  • Образ: неизменяемый набор слоёв и метаданных, из которого создаётся контейнер.
  • Контейнер: запущенный экземпляр образа с изолированным файловым пространством и процессами.
  • Реестр: хранилище Docker-образов, поддерживающее push/pull.

Альтернативы и когда не подходит

  • Если хотите, чтобы коллега собрал образ самостоятельно и видел шаги сборки — передавайте Dockerfile и инструкции по сборке.
  • Для многомодульных микросервисов удобнее настроить CI/CD, чтобы артефакты автоматически выкладывались в реестр.
  • Если важно хранить историю сборки и слои — избегайте docker export/import.

Советы для команд из России и СНГ

  • При использовании публичного Docker Hub учитывайте региональные ограничения и политику доступа к внешним сервисам компании.
  • Для ускорения загрузок большого архива используйте региональные облачные пространства и CDN.

Короткий анонс для команды (пример)

Подготовил Docker-образ сервиса v1.2.0. Можно подтянуть через Docker Hub: my-account/my-image:1.2.0 или скачать архив по ссылке. Проверьте, пожалуйста, что контейнер стартует и возвращает статус OK. Контрольная сумма архива указана в сообщении.

Итог

Docker предоставляет гибкие механизмы обмена образами: реестры удобны для частого и контролируемого распространения, экспорт/импорт полезен при ограничениях доступа. docker export служит для резервных снимков контейнера, но не восстанавливает историю сборки. Всегда проверяйте состав образа, удаляйте секреты и документируйте процесс передачи.

Important: храните архивы и образы с учётом политик безопасности и прав доступа вашей команды.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

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

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро