tag run remove hub example docker docker-image

run - ¿Cuál es la diferencia entre importar y cargar en Docker?



docker run image (3)

Entiendo la diferencia entre export (para contenedores) y save (para imágenes). Pero al final del día, el tarball producido por guardar o exportar debe usarse como una imagen .

Entonces, ¿por qué hay 2 comandos para hacer una imagen de un tarball?


Como novato en Docker, aprendí esta diferencia por las malas .

  • En un sistema:

    docker run -it myImage /bin/bash

    -> Funciona bien

  • En ese mismo sistema:

    docker **save** myImage -o myImage.tar

  • En el segundo sistema:

    docker **import** myImage.tar

    -> Funciona bien, sin problemas, solo se requiere etiqueta:

    docker tag _the_assigned_tag myImage

  • En ese segundo sistema:

    docker run -it myImage /bin/bash

    docker: Respuesta de error del daemon: error de creación de tiempo de ejecución OCI: container_linux.go: 345: el proceso de inicio del contenedor provocó "exec: /" / bin / bash / ": stat / bin / bash: no existe dicho archivo o directorio": desconocido .

La búsqueda de ese error me llevó a todo tipo de razones, como MountFlags="slave" , pero la verdadera razón resultó ser la que se describe en esta publicación: debería haber usado load en lugar de import. Sin saber lo que estaba pasando, el mensaje de error de Docker no me encaminó en ningún sentido hacia la causa de "importación", hasta que me topé con esta publicación.


docker save producirá un tarball, pero con todas las capas principales y todas las etiquetas + versiones.

docker export también produce un tarball, pero sin ninguna capa / historial.

A menudo se usa cuando uno quiere "aplanar" una imagen , como se ilustra en " Acoplar una imagen o contenedor Docker " de Thomas Uhrig :

docker export <CONTAINER ID> | docker import - some-image-name:latest

Sin embargo, una vez que se producen esos tarballs, carga / importación están ahí para:

  • docker import crea una imagen de un tarball que ni siquiera es una imagen (solo un sistema de archivos que desea importar como imagen)

Cree una imagen de sistema de archivos vacía e importe el contenido del tarball

  • docker load crea potencialmente múltiples imágenes desde un repositorio alquitranado (ya que docker save puede guardar múltiples imágenes en un tarball).

Carga un repositorio tarrado desde un archivo o la secuencia de entrada estándar


la importación de Docker se usa principalmente con un tarball que se crea a partir del contenedor en ejecución. Por ej. docker export containerID> /home/cntr.tar luego importe este tarball a una imagen Ej. docker import /home/cntr.tar mynewimage: etiqueta

Mientras que docker load se usa para cargar la imagen desde un tarball creado a partir de otra imagen. Por ej. docker save> /home/fromimg.tar y luego vuelva a cargarlo con docker load </home/fromimg.tar

La principal diferencia a pesar de que Docker guardar / cargar con imagen conserva el historial de la imagen. Mientras que la exportación / importación de Docker con contenedor aplana la imagen al eliminar todo el historial del contenedor.