Contenido
Tutorial de docker save: exportar y cargar imágenes (save, load, export, import)
docker save y docker load sirven para trasladar imágenes; docker export y docker import trabajan con el sistema de archivos de un contenedor, por lo que la configuración de la imagen puede ser distinta. Consulta los conceptos básicos de las imágenes en Imágenes de Docker.
Sintaxis
docker save [OPTIONS] IMAGE [IMAGE...]
docker load [OPTIONS]
docker export [OPTIONS] CONTAINER
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
Parámetros
| Comando | Parámetro | Descripción |
|---|---|---|
save | -o, --output string | Escribe en el archivo indicado; si no se especifica, envía la salida a STDOUT |
save | --platform strings | Guarda solo la plataforma indicada. Puedes separar varias con comas, por ejemplo, linux/amd64,linux/arm64/v8 |
load | -i, --input string | Lee el archivo tar indicado; si no se especifica, lee desde STDIN |
load | --platform strings | Carga solo la plataforma indicada |
load | -q, --quiet | No muestra la salida de la carga |
export | -o, --output string | Escribe el sistema de archivos del contenedor en el archivo indicado |
import | -c, --change list | Aplica instrucciones de Dockerfile a la imagen creada |
import | -m, --message string | Define el mensaje de confirmación de la imagen importada |
import | --platform string | Define la plataforma si el servidor admite varias plataformas |
Ejemplos
Guardar, comprimir con gzip y cargar una imagen
$ docker save -o nginx.tar nginx:1.30-alpine
$ ls -lh nginx.tar
-rw------- 1 root root 25.7M Oct 25 15:31 nginx.tar
$ docker save nginx:1.30-alpine | gzip > nginx.tar.gz && ls -lh nginx.tar.gz
-rw-r--r-- 1 root root 24.9M Oct 25 15:31 nginx.tar.gz
$ docker load -i nginx.tar.gz
Loaded image: nginx:1.30-alpine
$ docker images nginx
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
nginx:1.30-alpine 47928bf67eb6 93.5MB 27MB U
docker save -oescribe la imagen en un archivo tar; al usarlo directamente, el archivo de 25.7MB contiene los datos de la imagen.- Esta imagen ocupa 24.9MB después de comprimirla con gzip, solo 0.8MB menos que el tar original. La compresión aporta poco.
docker load -ipuede leer directamente un archivo comprimido con gzip y cargarnginx:1.30-alpine.- Después de cargarla, puedes ver la imagen con
docker images;DISK USAGEmuestra 93.5MB, un valor distinto del tamaño del archivo de almacenamiento.
Exportar e importar un sistema de archivos
$ docker export web -o web-fs.tar && ls -lh web-fs.tar
-rw------- 1 root root 60.5M Oct 25 15:31 web-fs.tar
$ docker import web-fs.tar myweb:snapshot
sha256:56e3f92534ca8c5aedd8de576ae2433f1864d3d3b51de847a8dc8dd7d503da4d
$ docker run --rm myweb:snapshot cat /usr/share/nginx/html/hi.txt
hello
$ docker image inspect -f '{{.Config.Cmd}}' nginx:1.30-alpine
[nginx -g daemon off;]
$ docker image inspect -f '{{.Config.Cmd}}' myweb:snapshot
[]
$ docker run --rm myweb:snapshot
docker: Error response from daemon: no command specified
Run 'docker run --help' for more information
docker exportescribe el sistema de archivos del contenedorweben un tar; después,docker importcrea la imagenmyweb:snapshot.- La imagen importada sigue incluyendo los archivos: si indicas
cat /usr/share/nginx/html/hi.txt, puedes leerhello. - El
.Config.Cmddenginx:1.30-alpinecontienenginx -g daemon off;, mientras que el demyweb:snapshotes un arreglo vacío[]. - Como la imagen importada no tiene un comando predeterminado,
docker runsin argumentos muestrano command specified; debes indicar explícitamente un comando al ejecutarla.
Capítulos relacionados
Ejercicios
Ejercicio: Guarda nginx:1.30-alpine en un archivo comprimido con gzip y, después, carga la imagen desde ese archivo.
Respuesta
docker save nginx:1.30-alpine | gzip > nginx.tar.gz
docker load -i nginx.tar.gz
Preguntas frecuentes
¿Qué diferencia hay entre docker save y docker export?
docker save guarda una imagen para poder restaurarla después con docker load; docker export exporta el sistema de archivos de un contenedor y, al combinarlo con docker import, crea una imagen nueva.
¿Cuánto espacio se ahorra al comprimir con gzip el resultado de docker save?
En este caso, el archivo tar de nginx:1.30-alpine ocupa 25.7MB y, después de comprimirlo con gzip, 24.9MB. La diferencia es pequeña.
¿Por qué aparece no command specified al ejecutar docker run directamente después de docker import?
El .Config.Cmd de myweb:snapshot, la imagen importada, es un arreglo vacío [], así que no tiene un comando predeterminado; puedes leer el archivo indicando cat /usr/share/nginx/html/hi.txt, pero si la ejecutas sin indicar un comando, aparece no command specified.
Actualizado 26 de octubre de 2026