Cómo usar el comando docker container export para exportar el sistema de archivos de un contenedor

DockerBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderás a utilizar el comando docker container export para exportar el sistema de archivos de un contenedor Docker. Comenzaremos creando y ejecutando un contenedor simple.

Después de crear el contenedor, explorarás diferentes métodos para exportar su sistema de archivos. Esto incluye exportar el sistema de archivos directamente a la salida estándar (STDOUT), exportarlo a un archivo usando redireccionamiento de shell y, finalmente, exportarlo a un archivo utilizando la opción --output del comando docker container export.

Crear y ejecutar un contenedor simple

En este paso, aprenderemos cómo crear y ejecutar un contenedor Docker simple. Un contenedor es una unidad estándar de software que empaqueta código y todas sus dependencias para que la aplicación se ejecute de manera rápida y confiable en diferentes entornos de computación.

Utilizaremos el comando docker run para crear y ejecutar un contenedor. La sintaxis básica es docker run [OPTIONS] IMAGE [COMMAND] [ARG...].

Ejecutemos un contenedor simple usando la imagen ubuntu y el comando echo. La imagen ubuntu es una imagen mínima del sistema operativo Ubuntu.

docker run ubuntu echo "Hello from Docker!"

Cuando ejecutes este comando por primera vez, Docker verificará si la imagen ubuntu existe localmente. Si no existe, la descargará de Docker Hub (el registro predeterminado). Luego, creará un nuevo contenedor a partir de esta imagen y ejecutará el comando echo "Hello from Docker!" dentro del contenedor. Una vez que el comando finalice, el contenedor se detendrá.

Deberías ver la salida Hello from Docker! en tu terminal.

Ahora, intentemos ejecutar un contenedor que permanezca en ejecución. Podemos usar la opción -d para ejecutar el contenedor en modo desatendido (en segundo plano) y el comando tail -f /dev/null para mantener el contenedor en ejecución sin consumir recursos significativos. También asignaremos un nombre al contenedor usando la opción --name para poder referenciarlo fácilmente más adelante.

docker run -d --name my-ubuntu-container ubuntu tail -f /dev/null

Este comando descargará la imagen ubuntu (si no está presente), creará un contenedor llamado my-ubuntu-container y ejecutará el comando tail -f /dev/null en modo desatendido. El comando mostrará el ID del contenedor.

Para verificar que el contenedor está en ejecución, puedes usar el comando docker ps, que lista los contenedores en ejecución.

docker ps

Deberías ver una lista de contenedores en ejecución, incluyendo my-ubuntu-container.

Exportar el sistema de archivos del contenedor a STDOUT

En este paso, aprenderemos cómo exportar el sistema de archivos de un contenedor Docker. Exportar el sistema de archivos de un contenedor crea un archivo tar con el contenido del contenedor. Esto puede ser útil para crear copias de seguridad, compartir estados de contenedores o inspeccionar su contenido.

Utilizaremos el comando docker export para exportar el sistema de archivos. La sintaxis básica es docker export [OPTIONS] CONTAINER.

Exportemos el sistema de archivos del contenedor my-ubuntu-container que creamos en el paso anterior. Por defecto, docker export envía el archivo tar a la salida estándar (STDOUT).

docker export my-ubuntu-container

Al ejecutar este comando, verás un flujo de datos binarios en tu terminal. Estos datos representan el archivo tar con el sistema de archivos del contenedor. Al ser datos binarios, no serán legibles directamente en la terminal.

Para entender mejor lo que se está exportando, podríamos redirigir la salida a un comando que procese archivos tar, como tar. Sin embargo, en este paso nos enfocaremos únicamente en la exportación a STDOUT.

El comando docker export exporta todo el sistema de archivos del contenedor, incluyendo cualquier cambio realizado desde su creación.

Exportar el sistema de archivos del contenedor a un archivo usando redirección

En el paso anterior, exportamos el sistema de archivos del contenedor a STDOUT. Aunque esto es útil para redirigir la salida a otros comandos, a menudo es más práctico guardar el sistema de archivos exportado en un archivo.

Podemos lograrlo usando redirección de shell. El operador > redirige la salida estándar de un comando a un archivo.

Exportemos el sistema de archivos del contenedor my-ubuntu-container a un archivo llamado ubuntu-filesystem.tar en tu directorio actual (~/project).

docker export my-ubuntu-container > ubuntu-filesystem.tar

Este comando ejecutará docker export my-ubuntu-container y redirigirá la salida binaria (el archivo tar) al archivo ubuntu-filesystem.tar. Esta vez no verás los datos binarios en tu terminal.

Una vez que el comando finalice, puedes verificar que el archivo se creó y comprobar su tamaño usando el comando ls -lh.

ls -lh ubuntu-filesystem.tar

Deberías ver el archivo ubuntu-filesystem.tar listado con su tamaño. El tamaño dependerá del contenido de la imagen ubuntu.

También puedes usar el comando file para confirmar que el archivo creado es un archivo tar.

file ubuntu-filesystem.tar

La salida debería indicar que el archivo es un archivo tar, por ejemplo: ubuntu-filesystem.tar: POSIX tar archive.

Exportar el sistema de archivos del contenedor a un archivo usando la opción --output

En el paso anterior, utilizamos redirección de shell (>) para guardar el sistema de archivos exportado del contenedor en un archivo. Docker también proporciona una opción específica, --output o -o, para especificar directamente el archivo de salida con el comando docker export. Esto puede resultar más conveniente que usar redirección de shell en algunos casos.

Exportemos nuevamente el sistema de archivos del contenedor my-ubuntu-container, esta vez usando la opción --output, y guardémoslo en un archivo llamado ubuntu-filesystem-output.tar en tu directorio actual (~/project).

docker export --output ubuntu-filesystem-output.tar my-ubuntu-container

Este comando es equivalente a usar redirección, pero utiliza una opción específica de Docker. El archivo tar se guardará directamente en el archivo especificado.

Una vez completado el comando, puedes verificar la creación y tamaño del nuevo archivo usando ls -lh.

ls -lh ubuntu-filesystem-output.tar

Deberías ver el archivo ubuntu-filesystem-output.tar listado. Su tamaño debería ser similar al archivo ubuntu-filesystem.tar creado en el paso anterior.

También puedes usar el comando file para confirmar que ubuntu-filesystem-output.tar es un archivo tar.

file ubuntu-filesystem-output.tar

La salida debería confirmar que se trata de un archivo tar.

Usar la opción --output es una forma limpia de especificar el archivo destino para el sistema de archivos exportado.

Resumen

En este laboratorio, aprendimos cómo crear y ejecutar contenedores Docker básicos. Utilizamos el comando docker run para ejecutar comandos dentro de un contenedor y para ejecutar contenedores en modo desatendido (detached) con un nombre específico. También usamos el comando docker ps para verificar que un contenedor esté en ejecución.

Luego exploramos cómo exportar el sistema de archivos de un contenedor usando el comando docker export. Aprendimos a exportar el sistema de archivos a la salida estándar (STDOUT) y cómo redirigir la salida a un archivo. Finalmente, aprendimos a usar la opción --output con docker export para especificar directamente el archivo de salida.