Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

DOCKER_TAR_CORRUPT Linux / DevOps

Экспорт и импорт в Docker: разница docker save/load и docker export/import

Обновлено: 21.08.2026
  • После docker import контейнер не запускается с ошибкой no command specified или теряет переменные окружения.
  • Необходимость переноса Docker-образов в закрытые контуры (Air-Gapped окружения) без прямого доступа к Docker Registry.
  • Потребность в сглаживании (Flattening) всех слоев контейнера в один для уменьшения размера и скрытия истории сборки.

1. Различия команд: Сравнительная таблица

Критерийdocker save / loaddocker export / import
Объект работыDocker Image (образ)Docker Container (запущенный/остановленный)
История слоевСохраняет все слои и кэшСхлопывает (flatten) в один слой
Метаданные (CMD, ENV)Полностью сохраняютсяСбрасываются (требуется ручной ввод)

2. Сценарий 1: Перенос образов в закрытый контур (docker save / load)

# Сохранение образа со всеми слоями и тегами в архив
docker save my_app:v1.0 postgres:15-alpine | gzip > app_bundle.tar.gz

# Загрузка архива на целевом сервере
gunzip -c app_bundle.tar.gz | docker load

3. Сценарий 2: Схлопывание слоев контейнера (docker export / import)

# Экспорт файловой системы запущенного контейнера
docker export my_container > container_fs.tar

# Импорт с восстановлением метаданных ENTRYPOINT и CMD
docker import \
  --change "ENV PATH=/usr/local/bin:/usr/bin:/bin" \
  --change "ENTRYPOINT [\"/app/entrypoint.sh\"]" \
  --change "CMD [\"start\"]" \
  container_fs.tar my_flattened_image:v1
💡 Практика специалистов: Для Air-Gapped окружений и CI/CD пайплайнов всегда используйте связку docker save / docker load — это гарантирует сохранение всех дайджестов, тегов, метаданных безопасности и структуры слоев.

Частые вопросы (FAQ)

Почему docker import создает образ, который не запускается по умолчанию?

docker export экспортирует только «слепок» файловой системы контейнера, отсекая метаданные манифеста (CMD, ENTRYPOINT, EXPOSE, ENV). При импорте их необходимо заново объявлять через флаг --change.

Можно ли сохранить сразу несколько образов в один tar-архив?

Да, команда docker save image1:tag image2:tag -o multi.tar сохраняет несколько образов и их общие базовые слои в один архив.

Полезные материалы
Рекомендуем