Beginner LevelDocker & Deployment
What is the difference between docker save/load and docker export/import?
❓ Interview Prompt: Compare docker save/load (image with layers) vs docker export/import (flat container filesystem) for portability and offline transfer.
Docker provides two mechanisms for transferring images/containers as files — they operate at different levels:
docker save / docker load (Image Transfer — Preferred):
•
Saves: The complete image including all read-only layers, metadata, tags, and history.
•
Load: Restores the image with full layer cache intact.
•
Use case: Transferring images to air-gapped servers, backing up images before registry migration.
•
Produces a
.tar file containing all image layers as separate files.docker export / docker import (Container Filesystem):
•
Exports: The container's merged filesystem as a single flat tarball — no layer history, no metadata.
•
Import: Creates a new image from the flat tarball (single layer, no history).
•
Use case: Inspecting container filesystem contents; creating minimal base images.
•
Results in a single-layer image — loses all caching benefits.
Key Difference:
save/load preserves layers and metadata (recommended). export/import flattens everything into a single layer.
Code Implementation Example
bash
# === docker save / load (IMAGE transfer — preferred) ===
# Save image with all layers to a compressed tar
docker save myapp:v1.2.3 | gzip > myapp-v1.2.3.tar.gz
# Save multiple images to one archive
docker save myapp:v1.2.3 postgres:16-alpine | gzip > bundle.tar.gz
# Load on target machine (restores all layers + tags)
docker load < myapp-v1.2.3.tar.gz
docker images myapp # ✅ myapp:v1.2.3 present with full layer cache
# === docker export / import (CONTAINER filesystem — flat) ===
# Export running container's merged filesystem
docker run -d --name mycontainer myapp:v1.2.3
docker export mycontainer | gzip > mycontainer-fs.tar.gz
# Import as new image (single flat layer, no history)
docker import mycontainer-fs.tar.gz myapp-flat:latest
docker history myapp-flat # Only 1 layer — no layer history💡save/load preserves multi-layer image; export/import creates a flat single-layer snapshot of a container filesystem.
🎯 Interview Key Takeaway
Use docker save/load for image portability (preserves layers + tags). Use docker export/import only for filesystem inspection or creating minimal base images.
#Docker#docker save#docker export#Image Transfer#Portability#Beginner
Back to all Docker & Deployment Questions→