Gestión de imágenes (tags, exportar, importar)
Ya hemos visto como construir imágenes con Dockerfile y Docker build. Ahora vamos a ver cómo gestionar las imágenes que hemos creado, descargado o commiteado, etiquetarlas, versionarlas, exportarlas e importarlas y subirlas nuestros propios repositorios en Docker Hub.
Dentro vídeo: https://youtu.be/5CNQMeYUBPs
Commit - Crear una imagen a partir de un contenedor
Ya habíamos comentado la posibilidad de crear una imagen a partir de un dockerfile, pero también podríamos hacerlo desde un contenedor en ejecución. Esto sería similar a hacer una snapshot de una máquina virtual, es decir, guardar el estado actual de un contenedor en una imagen, incluyendo los cambios que se hayan hecho en el sistema de archivos, memoria, etc.
Suponiendo que tuviéramos un contenedor en ejecución, podríamos crear una imagen a partir de él con el comando docker commit
:
docker commit <container_id> <nombre_imagen>
Por ejemplo, si tuviéramos un contenedor con id 1234567890ab
y quisiéramos crear una imagen a partir de él llamada mi-imagen
, podríamos hacerlo así:
docker commit 1234567890ab mi-imagen
Save y load - Exportar e importar imágenes
Estas imágenes que hemos creado, descargado o commiteado, podemos exportarlas a un fichero tar y luego importarlas en otro sistema. Para exportar una imagen a un fichero tar, podemos usar el comando docker save
:
docker save -o <nombre_fichero>.tar <nombre_imagen>
Por ejemplo, si quisiéramos exportar la imagen mi-imagen
a un fichero tar llamado mi-imagen.tar
, podríamos hacerlo así:
docker save -o mi-imagen.tar mi-imagen
Para importar una imagen desde un fichero tar, podemos usar el comando docker load
:
docker load -i <nombre_fichero>.tar
Por ejemplo, si quisiéramos importar la imagen mi-imagen
desde un fichero tar llamado mi-imagen.tar
, podríamos hacerlo así:
docker load -i mi-imagen.tar
Tags - Nombre y etiquetas de las imágenes
Al construir una imagen con docker build
, pudimos especificar un nombre y una etiqueta para la imagen con el argumento -t
. Este nombre y etiqueta, no solo se usa por darle un nombre familiar a la imagen, sino que también identifica el origen de la imagen y su versión. Este origen, es importante y lo veremos en la siguiente sección cuando hablemos de repositorios remotos y como interactuar con ellos.
Podemos alterar el nombre y las etiquetas de una imagen con el comando docker tag
:
docker tag <nombre_imagen>:<etiqueta> <nuevo_nombre>:<nueva_etiqueta>
Tan simple como eso. Por ejemplo, si quisiéramos cambiar el nombre de la imagen mi-imagen
a mi-imagen-v1
, podríamos hacerlo así:
docker tag mi-imagen:latest mi-imagen-v1:latest