Cómo usar el comando docker image load para cargar 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ás a utilizar el comando docker load para cargar imágenes de Docker desde archivos comprimidos. Esta es una habilidad fundamental para transferir imágenes entre máquinas sin depender de un registro (registry) de Docker. Comenzarás preparando un archivo de imagen de Docker utilizando docker save.

Después de la preparación, explorarás diferentes métodos para cargar la imagen. Esto incluye cargar una imagen desde la entrada estándar (STDIN), cargar desde un archivo usando la bandera --input, y específicamente cargar una variante de plataforma usando la bandera --platform. Al completar estos pasos, obtendrás experiencia práctica en la gestión de imágenes de Docker sin conexión.


Skills Graph

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

Preparar un archivo de imagen Docker

En este paso, aprenderemos cómo preparar un archivo comprimido de imagen Docker. Esto es útil para transferir imágenes Docker entre diferentes máquinas sin depender de un registro (registry) de Docker. Utilizaremos el comando docker save para crear un archivo de una imagen Docker existente.

Primero, descarguemos una imagen Docker simple que usaremos para esta demostración. Utilizaremos la imagen hello-world.

docker pull hello-world

Deberías ver una salida que indica que la imagen se está descargando y que es una imagen muy pequeña.

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, podemos guardarla en un archivo tar. Lo guardaremos en un archivo llamado hello-world.tar en el directorio ~/project.

docker save -o ~/project/hello-world.tar hello-world

La bandera -o especifica la ruta del archivo de salida. El comando guardará la imagen hello-world en el archivo especificado. No deberías ver ninguna salida si el comando se ejecuta correctamente.

Para verificar que se creó el archivo comprimido, puedes listar los archivos en el directorio ~/project.

ls ~/project

Deberías ver hello-world.tar entre los archivos listados.

hello-world.tar

Este archivo hello-world.tar ahora contiene los datos de la imagen Docker para la imagen hello-world. Puedes transferir este archivo a otra máquina y cargar la imagen desde él usando el comando docker load, que cubriremos en los siguientes pasos.

Cargar una imagen Docker desde STDIN

En este paso, aprenderemos cómo cargar una imagen Docker desde la entrada estándar (STDIN). Esta es otra forma de cargar un archivo de imagen, particularmente útil cuando se canaliza (pipe) la salida de docker save directamente a docker load.

Primero, eliminemos la imagen hello-world que descargamos y guardamos en el paso anterior. Esto asegurará que estamos cargando la imagen desde el archivo y no usando la existente.

docker rmi hello-world

Deberías ver una salida que indica que la imagen ha sido eliminada.

Untagged: hello-world:latest
Deleted: sha256:...

Ahora, usaremos el comando cat para enviar el contenido del archivo hello-world.tar a la salida estándar, y luego canalizaremos esa salida al comando docker load.

cat ~/project/hello-world.tar | docker load

El comando docker load, cuando se usa sin la bandera --input, lee el archivo de imagen desde STDIN. Deberías ver una salida que indica que las capas (layers) de la imagen se están cargando.

...
Loaded image: hello-world:latest

Para verificar que la imagen se ha cargado correctamente, puedes listar las imágenes Docker disponibles.

docker images

Deberías ver la imagen hello-world en la salida.

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

Esto demuestra cómo cargar una imagen Docker desde un archivo canalizado a STDIN.

Cargar una imagen Docker desde un archivo usando --input

En este paso, aprenderemos cómo cargar una imagen Docker desde un archivo utilizando la bandera --input con el comando docker load. Esta es la forma más común de cargar un archivo de imagen desde un fichero.

Primero, eliminemos nuevamente la imagen hello-world para asegurarnos de que la estamos cargando desde el archivo comprimido.

docker rmi hello-world

Deberías ver una salida que confirme la eliminación de la imagen.

Untagged: hello-world:latest
Deleted: sha256:...

Ahora, usaremos el comando docker load con la bandera --input para especificar la ruta del archivo hello-world.tar que creamos en el primer paso.

docker load --input ~/project/hello-world.tar

La bandera --input indica a docker load que lea el archivo de imagen desde el fichero especificado en lugar de STDIN. Deberías ver una salida similar a cuando cargamos desde STDIN, indicando que se están cargando las capas.

...
Loaded image: hello-world:latest

Para confirmar que la imagen se ha cargado correctamente, lista nuevamente las imágenes Docker.

docker images

La imagen hello-world debería aparecer en la lista.

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

Este método es generalmente preferido cuando tienes el archivo de imagen guardado como un fichero, ya que es más explícito que canalizar el contenido del archivo a STDIN.

Cargar una variante de plataforma específica usando --platform

En este paso, exploraremos cómo cargar una variante de plataforma específica de una imagen Docker desde un archivo usando la bandera --platform. Esto es particularmente útil cuando un archivo de imagen contiene variantes para múltiples arquitecturas (ej. linux/amd64, linux/arm64).

Primero, eliminemos nuevamente la imagen hello-world para comenzar desde cero.

docker rmi hello-world

Deberías ver una salida confirmando la eliminación de la imagen.

Untagged: hello-world:latest
Deleted: sha256:...

Ahora, usaremos el comando docker load con la bandera --input para especificar el archivo y la bandera --platform para indicar la plataforma deseada. Para este ejemplo, especificaremos linux/amd64, que es la arquitectura de la VM de LabEx.

docker load --input ~/project/hello-world.tar --platform linux/amd64

La bandera --platform asegura que Docker solo cargue la variante de imagen que coincide con la arquitectura y sistema operativo especificados. Aunque la imagen hello-world es muy simple y probablemente no tenga variaciones significativas entre plataformas en su archivo, esto demuestra el uso de la bandera. Deberías ver una salida indicando que se están cargando las capas.

...
Loaded image: hello-world:latest

Para confirmar que la imagen se ha cargado, lista las imágenes Docker.

docker images

La imagen hello-world debería aparecer en la lista.

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

Usar la bandera --platform es importante cuando trabajas con archivos de imágenes multi-arquitectura para asegurarte de cargar la variante correcta para tu entorno.

Resumen

En este laboratorio, aprendimos cómo preparar un archivo de imagen Docker utilizando el comando docker save, lo cual es esencial para transferir imágenes sin necesidad de un registro. Guardamos exitosamente la imagen hello-world en un archivo tar.

Luego exploramos diferentes métodos para cargar imágenes Docker desde archivos usando el comando docker load. Aprendimos cómo cargar una imagen desde la entrada estándar (STDIN), lo cual es útil para operaciones con tuberías, y cómo cargar una imagen directamente desde un archivo usando la bandera --input. Finalmente, descubrimos cómo cargar una variante específica de plataforma de una imagen desde un archivo usando la bandera --platform, demostrando la flexibilidad del comando docker load para manejar imágenes multiplataforma.