Introducción
En este laboratorio, aprenderás a utilizar el comando docker image import para crear imágenes Docker desde diversas fuentes. Explorarás la importación de imágenes directamente desde una URL remota, la importación desde un tarball local utilizando la entrada estándar, la importación desde un tarball local con un mensaje de confirmación (commit) y la importación desde un directorio local con nuevas configuraciones.
A través de ejercicios prácticos, obtendrás experiencia en el uso de las diferentes opciones del comando docker image import y comprenderás cómo verificar las imágenes importadas. Este laboratorio te proporcionará las habilidades para crear eficientemente imágenes Docker a partir de tarballs o directorios existentes, ofreciendo flexibilidad en tu flujo de trabajo con Docker.
Importar una imagen desde una URL remota
En este paso, aprenderás cómo importar una imagen Docker directamente desde una URL remota. Esto es útil cuando tienes un tarball de imagen alojado en un servidor web y deseas cargarlo en tu entorno Docker sin descargarlo manualmente primero.
Primero, usemos el comando curl para descargar un tarball de imagen de ejemplo desde una URL remota. Utilizaremos un tarball de imagen públicamente disponible para fines de demostración.
curl -o ~/project/alpine.tar https://labex.io/images/alpine.tar
Este comando descarga el tarball de imagen desde la URL especificada y lo guarda como alpine.tar en tu directorio ~/project. La bandera -o especifica el nombre y ubicación del archivo de salida.
A continuación, usaremos el comando docker image import para importar este tarball a tu entorno Docker. El comando import puede tomar una URL o una ruta de archivo como entrada. Cuando se usa una URL, Docker descarga el contenido directamente y lo importa.
docker image import https://labex.io/images/alpine.tar
Este comando importa la imagen desde la URL remota. Docker descargará el tarball y creará una nueva imagen con su contenido. Por defecto, la imagen importada no tendrá repositorio ni etiqueta.
Para verificar que la imagen se ha importado, puedes listar las imágenes disponibles usando el comando docker images.
docker images
Deberías ver una imagen con <none> tanto para REPOSITORY como para TAG, y un tiempo CREATED reciente. Esta es la imagen que acabas de importar.
También puedes importar la imagen y asignarle un repositorio y etiqueta durante el proceso de importación. Esto se hace agregando el repositorio y etiqueta deseados después de la URL.
docker image import https://labex.io/images/alpine.tar alpine:latest
Este comando importa la misma imagen pero la etiqueta como alpine:latest.
Ahora, lista las imágenes nuevamente para ver la imagen recién etiquetada.
docker images
Ahora deberías ver una imagen con el repositorio alpine y la etiqueta latest.
Importar una imagen desde un tarball local usando STDIN
En el paso anterior, aprendiste cómo importar una imagen Docker desde una URL remota. En este paso, aprenderás cómo importar una imagen Docker desde un archivo tarball local utilizando la entrada estándar (STDIN). Este método es útil cuando tienes un tarball de imagen local y deseas canalizar su contenido directamente al comando docker image import.
Primero, asegúrate de tener el archivo alpine.tar en tu directorio ~/project del paso anterior. Si no lo tienes, puedes descargarlo nuevamente usando curl:
curl -o ~/project/alpine.tar https://labex.io/images/alpine.tar
Ahora, usaremos el comando cat para leer el contenido del archivo alpine.tar y canalizarlo al comando docker image import. El argumento - en docker image import le indica que lea desde STDIN.
cat ~/project/alpine.tar | docker image import -
Este comando lee el archivo alpine.tar y envía su contenido como entrada al comando docker image import. Docker luego importa la imagen a partir de los datos recibidos. Similar a importar desde una URL sin especificar una etiqueta, la imagen importada no tendrá repositorio ni etiqueta por defecto.
Para verificar que la imagen se ha importado, lista las imágenes disponibles:
docker images
Deberías ver otra imagen con <none> para REPOSITORY y TAG.
También puedes especificar un repositorio y etiqueta al importar desde STDIN. La sintaxis es similar a importar desde una URL.
cat ~/project/alpine.tar | docker image import - alpine:stdin
Este comando importa la imagen desde STDIN y la etiqueta como alpine:stdin.
Lista las imágenes nuevamente para confirmar la nueva etiqueta:
docker images
Ahora deberías ver una imagen con el repositorio alpine y la etiqueta stdin.
El uso de STDIN es una forma flexible de importar imágenes, especialmente cuando encadenas comandos o trabajas con tarballs comprimidos donde podrías descomprimir e importar en un solo paso.
Importar una imagen desde un tarball local con mensaje de commit
En los pasos anteriores, importaste imágenes desde una URL y STDIN. En este paso, aprenderás cómo importar una imagen desde un archivo tarball local y agregar un mensaje de commit durante el proceso de importación. Agregar un mensaje de commit puede ayudarte a documentar el origen o propósito de la imagen importada.
Primero, asegúrate de tener el archivo alpine.tar en tu directorio ~/project. Si no lo tienes, descárgalo:
curl -o ~/project/alpine.tar https://labex.io/images/alpine.tar
Ahora, usaremos el comando docker image import con la bandera -m para agregar un mensaje de commit. También especificaremos la ruta del archivo local como fuente.
docker image import -m "Imported alpine base image" ~/project/alpine.tar alpine:commit
En este comando:
-m "Imported alpine base image"agrega el mensaje de commit especificado al historial de la imagen.~/project/alpine.tares la ruta al archivo tarball local.alpine:commites el repositorio y etiqueta deseados para la imagen importada.
Después de ejecutar este comando, Docker importará la imagen desde el tarball local y aplicará el mensaje de commit.
Para verificar la importación y el mensaje de commit, puedes inspeccionar la imagen usando el comando docker image history.
docker image history alpine:commit
Este comando muestra el historial de la imagen alpine:commit. Deberías ver una entrada con el mensaje de commit "Imported alpine base image" en la columna COMMENT.
También puedes listar las imágenes para confirmar la nueva etiqueta:
docker images
Deberías ver una imagen con el repositorio alpine y la etiqueta commit.
Agregar mensajes de commit es una buena práctica para rastrear los cambios y el origen de tus imágenes Docker, especialmente cuando importas desde fuentes externas.
Importar una imagen desde un directorio local con nuevas configuraciones
En los pasos anteriores, importaste imágenes desde archivos tarball. En este paso, aprenderás cómo importar una imagen desde un directorio local y aplicar nuevas configuraciones durante el proceso de importación. Esto es útil cuando tienes una instantánea del sistema de archivos en un directorio y deseas convertirla en una imagen Docker con configuraciones específicas como el comando a ejecutar.
Primero, creemos una estructura de directorio simple y un archivo que se incluirá en nuestra imagen.
mkdir ~/project/myimage
echo "Hello, Docker!" > ~/project/myimage/hello.txt
Esto crea un directorio llamado myimage dentro de tu directorio ~/project y un archivo llamado hello.txt dentro de él que contiene el texto "Hello, Docker!".
Ahora, usaremos el comando docker image import para importar el contenido del directorio ~/project/myimage. También usaremos la bandera -c para especificar cambios de configuración para la imagen. En este caso, estableceremos la instrucción CMD, que define el comando predeterminado a ejecutar cuando se inicia un contenedor desde esta imagen.
docker image import -c 'CMD ["/bin/cat", "/hello.txt"]' ~/project/myimage myimage:latest
En este comando:
-c 'CMD ["/bin/cat", "/hello.txt"]'establece el comando predeterminado para la imagen como/bin/cat /hello.txt. La bandera-cte permite aplicar instrucciones de Dockerfile comoCMD,ENTRYPOINT,ENV,EXPOSE,LABEL,ONBUILD,STOPSIGNAL,USERyWORKDIR.~/project/myimagees la ruta al directorio local que contiene el contenido del sistema de archivos.myimage:latestes el repositorio y etiqueta deseados para la imagen importada.
Después de ejecutar este comando, Docker creará una nueva imagen basada en el contenido del directorio ~/project/myimage y aplicará la configuración CMD especificada.
Para verificar la importación y la configuración, puedes listar las imágenes:
docker images
Deberías ver una imagen con el repositorio myimage y la etiqueta latest.
Ahora, ejecutemos un contenedor desde esta imagen para ver si la instrucción CMD se aplicó correctamente.
docker run myimage:latest
Este comando inicia un contenedor desde la imagen myimage:latest. Como configuramos el CMD como /bin/cat /hello.txt, el contenedor debería ejecutar este comando e imprimir el contenido del archivo hello.txt, que es "Hello, Docker!".
Deberías ver "Hello, Docker!" impreso en tu terminal. Esto confirma que el contenido del directorio se importó correctamente y que la configuración CMD se aplicó con éxito.
Resumen
En este laboratorio, aprendimos cómo utilizar el comando docker image import para crear imágenes Docker desde diversas fuentes. Comenzamos importando una imagen directamente desde una URL remota, demostrando cómo cargar un archivo tarball de imagen alojado en línea sin necesidad de descarga manual. Esto implicó usar curl para descargar un tarball de ejemplo y luego el comando docker image import con la URL como entrada, mostrando cómo importar con y sin especificar un repositorio y etiqueta.
Los pasos posteriores, aunque no están completamente detallados en el contenido proporcionado, probablemente cubrirían la importación de imágenes desde archivos tarball locales usando STDIN, la importación con un mensaje de commit para mejor seguimiento, y la importación desde un directorio local mientras se aplican nuevas configuraciones. Estos pasos ilustrarían aún más la flexibilidad y los diferentes casos de uso del comando docker image import para crear y gestionar imágenes Docker.



