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

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

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

Как устроить идеальную вечеринку для просмотра ТВ
Развлечения

Как устроить идеальную вечеринку для просмотра ТВ

Как распаковать несколько RAR‑файлов сразу
Инструменты

Как распаковать несколько RAR‑файлов сразу

Приватный просмотр в Linux: как и зачем
Приватность

Приватный просмотр в Linux: как и зачем

Windows 11 не видит iPod — способы исправить
Руководство

Windows 11 не видит iPod — способы исправить

PS5: как настроить игровые пресеты
Консоли

PS5: как настроить игровые пресеты

Как переключить камеру в Omegle на iPhone и Android
Руководство

Как переключить камеру в Omegle на iPhone и Android