Vivimos en una época llena de innovaciones tecnológicas, en especial relacionadas con el desarrollo de software y administración de infraestructura. A menudo encontramos situaciones en las que necesitamos transferir imágenes Docker localmente, sin depender de Docker Hub o limitados por conexiones de red restringidas. Afortunadamente, dos comandos esenciales simplifican esta tarea: Docker Save y Docker Load.
¿Cuándo y por qué utilizar Docker Save para exportar imágenes?
Puede haber ocasiones en las que compartir una imagen Docker a través de redes es complicado o simplemente imposible debido a restricciones organizacionales o limitaciones de ancho de banda. Algunas razones típicas incluyen:
Protocolos de red en organizaciones que impiden la transferencia de imágenes.
Ancho de banda insuficiente o demasiado lento.
Deseo de transferir imágenes utilizando dispositivos externos como memorias USB.
Con el comando docker save, puedes exportar fácilmente una imagen a un archivo, facilitando su traslado físico:
docker save AminEspinosa/link3 > link3.rar
Este comando genera un archivo comprimido con todos los componentes de la imagen de Docker listos para transportar y compartir fácilmente.
¿Qué información incluye el archivo exportado tras utilizar Docker Save?
Al exportar imágenes Docker mediante docker save, el archivo resultante contiene varias estructuras que aseguran mantener un historial preciso de versiones y modificaciones aplicadas previamente:
Un archivo version que indica las diferentes versiones incluidas.
Un archivo manifest.json donde se especifican capas (layers) que representan cambios puntuales realizados a la imagen con anterioridad.
Cada capa identificada representa un punto específico en el tiempo que registra cambios, como nuevas librerías o modificaciones generales, creando así un archivo minuciosamente versátil y completo.
¿Cómo cargar nuevamente una imagen Docker con Docker Load?
Una vez exportada una imagen, cargarla nuevamente en Docker es igual de sencillo. Para importar la imagen con docker load, solo debes ejecutar la siguiente instrucción:
docker load --input link3.rar
Este comando restaurará la imagen empaquetada previamente y la visualizarás fácilmente listada dentro de Docker Desktop o escribiendo en terminal:
docker images
Resulta relevante mencionar que no es obligatorio contar con Docker Desktop ejecutándose en segundo plano para realizar satisfactoriamente esta operación desde la terminal.
Cuéntanos tu experiencia utilizando estos comandos. ¿Has enfrentado situaciones similares con limitaciones de red o transferencia local de imágenes Docker?
Exportación e importación de imágenes Docker con comandos CLI
Exportación e importación de imágenes Docker con comandos CLI
export
docker export is used to export the container’s file system into a tar file. it doesn’t export any volumes associated with it.
save
docker save is used to save one or more images into a tar file. Let’s pull the busybox as well and save both images into a tar file.
save and export are both used for sharing tar files. But, save is used for images and can save multiple images into a tar file with all the layers and history. export is used for containers without any history or layers.
Tuve el mismo problema, lo que hice fue guardarla como tar y al momento de cargargarla (load) ya no tuve problemas, este fue el comando que utilicé: docker save jrs/linktree > linktree.tar
En el comando docker save aminespinoza/linktree > linktree.rar, no es necesario incluir la etiqueta de la imagen porque docker save exporta la imagen completa con todas sus capas y metadatos. Si tienes una imagen con varias versiones (tags), docker save incluirá toda la información relevante de cada capa, permitiéndote restaurar la imagen en su estado exacto. Al usar docker load, podrás recuperar la imagen con todas sus versiones y cambios, ya que estos están almacenados dentro del archivo comprimido.
Las capas son eso, capas, no versiones anteriores de la imagen generada, digamos que cada capa corresponde a una operación realizada dentro de la imagen.