Cómo usar el comando de guardado de imágenes de Docker para exportar imágenes

DockerDockerBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá cómo utilizar el comando docker save para exportar imágenes de Docker a archivos de archivo tar. Esta es una habilidad crucial para hacer copias de seguridad de imágenes, transferirlas entre sistemas sin un registro o agrupar múltiples imágenes para su distribución.

Explorará cómo guardar una sola imagen, guardar múltiples imágenes en un solo archivo, guardar una variante de plataforma específica de una imagen y comprimir el archivo de imagen guardado utilizando gzip. Al final de este laboratorio, será proficiente en el uso de docker save para diversas tareas de gestión de imágenes.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/ImageOperationsGroup -.-> docker/save("Save Image") subgraph Lab Skills docker/pull -.-> lab-555162{{"Cómo usar el comando de guardado de imágenes de Docker para exportar imágenes"}} docker/images -.-> lab-555162{{"Cómo usar el comando de guardado de imágenes de Docker para exportar imágenes"}} docker/save -.-> lab-555162{{"Cómo usar el comando de guardado de imágenes de Docker para exportar imágenes"}} end

Guardar una sola imagen en un archivo tar

En este paso, aprenderá cómo guardar una sola imagen de Docker en un archivo de archivo tar. Esto es útil para hacer copias de seguridad de imágenes o transferirlas a otro sistema sin una conexión directa a un registro de Docker.

Primero, vamos a descargar una imagen de Docker simple que usaremos para este ejemplo. Usaremos la imagen hello-world, que es pequeña y adecuada para esta demostración.

docker pull hello-world

Debería ver una salida que indique que la imagen se está descargando.

Using default tag: latest
latest: Pulling from library/hello-world
...
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest

Ahora que tenemos la imagen hello-world localmente, podemos guardarla en un archivo tar utilizando el comando docker save. La sintaxis básica es docker save -o <output_file.tar> <image_name>.

Guardaremos la imagen hello-world en un archivo llamado hello-world.tar en su directorio actual (~/project).

docker save -o hello-world.tar hello-world

Después de ejecutar este comando, se creará un archivo llamado hello-world.tar en su directorio ~/project. Este archivo contiene la imagen de Docker hello-world.

Puede verificar que se haya creado el archivo y comprobar su tamaño utilizando el comando ls -lh.

ls -lh hello-world.tar

Debería ver una salida similar a esta, que muestra el tamaño del archivo:

-rw-r--r-- 1 labex labex ... hello-world.tar

Este archivo tar ahora se puede transferir a otra máquina y cargar utilizando el comando docker load.

Guardar múltiples imágenes en un archivo tar

En el paso anterior, aprendiste cómo guardar una sola imagen de Docker. En este paso, aprenderás cómo guardar múltiples imágenes de Docker en un solo archivo de archivo tar. Esto es conveniente cuando necesitas agrupar varias imágenes juntas para su distribución o copia de seguridad.

Primero, vamos a descargar otra imagen de Docker para tener más de una imagen que guardar. Descargaremos la imagen alpine, que es una distribución Linux ligera.

docker pull alpine

Deberías ver una salida que indique que la imagen alpine se está descargando.

Using default tag: latest
latest: Pulling from library/alpine
...
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest

Ahora tienes tanto la imagen hello-world como la imagen alpine localmente. Puedes verificar esto listando tus imágenes locales:

docker images

La salida debería mostrar tanto hello-world como alpine en la lista.

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    ...            ...            ...
alpine        latest    ...            ...            ...

Para guardar múltiples imágenes en un solo archivo tar, simplemente enumera los nombres de las imágenes después del nombre del archivo de salida en el comando docker save. La sintaxis es docker save -o <output_file.tar> <image1_name> <image2_name> ....

Guardaremos tanto la imagen hello-world como la imagen alpine en un archivo llamado images.tar en tu directorio ~/project.

docker save -o images.tar hello-world alpine

Después de ejecutar este comando, se creará un archivo llamado images.tar en tu directorio ~/project. Este archivo contiene tanto la imagen de Docker hello-world como la imagen alpine.

Puedes verificar que se haya creado el archivo y comprobar su tamaño utilizando el comando ls -lh. El tamaño será mayor que el archivo hello-world.tar del paso anterior porque contiene dos imágenes.

ls -lh images.tar

Deberías ver una salida similar a esta:

-rw-r--r-- 1 labex labex ... images.tar

Para confirmar que ambas imágenes se incluyen en el archivo, puedes listar el contenido del archivo tar utilizando el comando tar -tf.

tar -tf images.tar

La salida debería mostrar archivos relacionados con ambas imágenes, incluyendo sus manifiestos y datos de capas. Deberías ver entradas como hello-world/ y alpine/.

...
hello-world/
hello-world/manifest.json
...
alpine/
alpine/manifest.json
...

Este único archivo tar ahora se puede utilizar para cargar ambas imágenes en otro sistema utilizando docker load.

Guardar una variante de plataforma específica de una imagen

En este paso, aprenderá cómo guardar una variante de plataforma específica de una imagen de Docker. Las imágenes de Docker se pueden construir para diferentes arquitecturas (como amd64, arm64, etc.). A veces, es posible que necesite guardar una imagen construida específicamente para una plataforma en particular.

Por defecto, docker pull y docker save operan en la variante de imagen que coincide con la arquitectura de su sistema actual. Sin embargo, puede especificar una plataforma diferente utilizando la opción --platform.

Vamos a descargar una imagen que tenga variantes para diferentes plataformas. La imagen alpine es un buen ejemplo. Descargaremos explícitamente la variante arm64 de la imagen alpine, aunque es probable que su máquina virtual de LabEx sea amd64.

docker pull --platform arm64 alpine

Debería ver una salida que indique que se está descargando la variante arm64 de la imagen alpine.

arm64: Pulling from library/alpine
...
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest

Ahora, guardemos esta variante arm64 específica de la imagen alpine en un archivo tar. Volveremos a utilizar la opción --platform con el comando docker save.

Guardaremos la variante arm64 de alpine en un archivo llamado alpine_arm64.tar en su directorio ~/project.

docker save --platform arm64 -o alpine_arm64.tar alpine

Después de ejecutar este comando, se creará un archivo llamado alpine_arm64.tar en su directorio ~/project. Este archivo contiene la variante arm64 de la imagen de Docker alpine.

Puede verificar que se haya creado el archivo utilizando el comando ls -lh.

ls -lh alpine_arm64.tar

Debería ver una salida similar a esta:

-rw-r--r-- 1 labex labex ... alpine_arm64.tar

Para confirmar que la imagen guardada es en realidad la variante arm64, puede inspeccionar el contenido del archivo tar. Si bien verificar directamente la arquitectura a partir del contenido del archivo tar es complejo, el hecho de haber utilizado --platform arm64 durante la operación de guardado garantiza que la imagen guardada sea para esa plataforma.

Esto demuestra cómo guardar explícitamente una imagen para una plataforma diferente a la arquitectura de su host.

Guardar una imagen y comprimirla utilizando gzip

En este último paso, aprenderás cómo guardar una imagen de Docker en un archivo tar y comprimirla utilizando gzip al mismo tiempo. Esta es una práctica común para reducir el tamaño del archivo de la imagen guardada, lo que facilita su almacenamiento y transferencia.

El comando docker save en sí no tiene una opción de compresión incorporada. Sin embargo, puedes lograr la compresión canalizando la salida de docker save a una utilidad de compresión como gzip.

Vamos a guardar la imagen alpine (que debes haber descargado en un paso anterior) y comprimirla utilizando gzip. La salida se redirigirá a un archivo con extensión .tar.gz.

La sintaxis implica canalizar la salida: docker save <image_name> | gzip > <output_file.tar.gz>.

Vamos a guardar la imagen alpine en un archivo tar comprimido con gzip llamado alpine.tar.gz en tu directorio ~/project.

docker save alpine | gzip > alpine.tar.gz

Este comando guarda la imagen alpine en la salida estándar, canaliza esa salida al comando gzip para la compresión y luego redirige la salida comprimida al archivo alpine.tar.gz.

Después de ejecutar este comando, se creará un archivo llamado alpine.tar.gz en tu directorio ~/project.

Puedes verificar que se haya creado el archivo y comprobar su tamaño utilizando el comando ls -lh. Compara su tamaño con el tamaño de la imagen alpine sin comprimir (que es parte de images.tar o lo sería si la hubieras guardado individualmente) para ver el efecto de la compresión.

ls -lh alpine.tar.gz

Deberías ver una salida similar a esta:

-rw-r--r-- 1 labex labex ... alpine.tar.gz

Para confirmar que el archivo es un archivo tar comprimido con gzip, puedes utilizar el comando file.

file alpine.tar.gz

La salida debería indicar que es un archivo de datos comprimidos con gzip.

alpine.tar.gz: gzip compressed data, ...

También puedes listar el contenido del archivo comprimido utilizando tar -tfz. La opción z le dice a tar que descomprima el archivo utilizando gzip antes de listar el contenido.

tar -tfz alpine.tar.gz

Deberías ver el contenido de la imagen alpine dentro del archivo, similar a cuando listaste el contenido de images.tar.

...
alpine/
alpine/manifest.json
...

Este método es eficiente para guardar y comprimir imágenes en un solo comando.

Resumen

En este laboratorio, aprendiste cómo usar el comando docker save para exportar imágenes de Docker a archivos tar. Guardaste con éxito una sola imagen (hello-world) en un archivo tar, lo que demuestra el uso básico del comando.

Además, exploraste cómo guardar múltiples imágenes en un solo archivo, lo cual es útil para agrupar imágenes. También aprendiste cómo guardar una variante de plataforma específica de una imagen y cómo comprimir el archivo tar de salida utilizando gzip para reducir su tamaño. Estos pasos cubrieron las capacidades fundamentales de docker save para la copia de seguridad y transferencia de imágenes.