ejemplos ejecutar docker

ejecutar - ¿Cuál es la diferencia entre guardar y exportar en Docker?



dockerfile ejemplos (5)

Docker save Produce un repositorio de archivo tar que contiene todas las capas principales, y todas las etiquetas + versiones, o repo: tag especificado, para cada argumento proporcionado desde la imagen .

Exportación Docker Produce un archivo especificado (puede ser tar o tgz) con contenido plano sin contenido de volúmenes especificados desde el Contenedor .

el docker save debe usarse en la imagen de la docker mientras que la exportación de docker debe usarse en el contenedor (al igual que la imagen en ejecución)

Guardar uso

ventana acoplable guardar [OPCIONES] IMAGEN [IMAGEN ...]

Guarde una imagen (s) en un archivo tar (transmitido a STDOUT de forma predeterminada)

--help = false Imprimir uso -o, --output = "" Escribir en un archivo, en lugar de STDOUT

Uso de exportación

exportador docker [OPCIONES] CONTENEDOR

Exportar los contenidos del sistema de archivos de un contenedor como un archivo tar

--help = false Imprimir uso -o, --output = "" Escribir en un archivo, en lugar de STDOUT

Estoy jugando con Docker durante un par de días y ya hice algunas imágenes (¡lo cual fue muy divertido!). Ahora quiero continuar mi trabajo y llegar a los comandos de save y export , pero no los entiendo completamente.

¿Cuál es la diferencia entre save y export en Docker?


Hay dos diferencias principales entre los comandos de guardar y exportar.

  1. El comando Guardar guarda toda la imagen con historial y metadatos, pero el comando exportar exporta solo la estructura de archivos (sin historial y metadatos). Entonces, el archivo tar exportado será más pequeño que el guardado.

  2. Cuando utiliza el sistema de archivos exportado para crear una nueva imagen, esta nueva imagen no contiene los comandos USER, EXPOSE, RUN, etc. de su Dockerfile. Solo se transferirá la estructura del archivo. Por lo tanto, cuando usa palabras clave mencionadas en su archivo Docker, no puede usar el comando de exportación para transferir imágenes a otra máquina; siempre debe usar el comando guardar.


La imagen exportada no guardará ninguna capa o información del historial, por lo que será más pequeña y no podrá deshacerse.

La imagen guardada tendrá información de capa y de historial, por lo que es más grande.

Si le da esto a un cliente, la Q es ¿desea mantener esas capas o no?


La respuesta corta es:

  • save buscará una imagen: para una VM o un servidor físico, esa sería la instalación de la imagen .ISO o disco. El sistema operativo base.

    Empacará las capas y los metadatos de toda la cadena requerida para construir la imagen. A continuación, puede cargar esta cadena de imágenes "guardadas" en otra instancia de acoplador y crear contenedores a partir de estas imágenes.

  • export traerá todo el contenedor: como una instantánea de una máquina virtual normal. Guarda el sistema operativo por supuesto, pero también cualquier cambio que haya realizado, cualquier archivo de datos escrito durante la vida útil del contenedor. Esta es más como una copia de seguridad tradicional.

    Le dará un archivo .tar plano que contiene el sistema de archivos de su contenedor.

Editar: como mi explicación aún puede generar confusión, creo que es importante entender que uno de estos comandos funciona con contenedores, mientras que el otro funciona con imágenes.

  • Una imagen debe considerarse ''muerta'' o inmutable, ya que al comenzar 0 o 1000 contenedores no se alterará un solo byte. Es por eso que hice una comparación con un sistema de instalación ISO anterior. Es tal vez incluso más cerca de un CD en vivo.

  • Un contenedor "inicia" la imagen y agrega una capa adicional encima. Esta capa almacena cualquier cambio en el contenedor (archivos creados / cambiados / eliminados ...).


Técnicamente, guardar / cargar funciona con repositorios que pueden ser una o más de las imágenes, también denominadas capas. Una imagen es una sola capa dentro de un repositorio. Finalmente, un contenedor es una imagen instanciada (ejecutándose o no).