docker logo

Ya en el post sobre contenedores hablé un poco de que era una imágen, aquí voy a entrar un poco mas en detalle sobre como funcionan y como gestionarlas, estos son los apuntes que he tomado sobe imágenes.

Dockerhub

Dockerhub es el repositorio donde se almacenan las imágenes que utilizamos y donde podremos subir nuestras propias imágenes, existen mas repositorios, pero este es el que docker utiliza por defecto. Aquí podremos encontrar infinidad de imágenes, tanto las oficiales como otras no oficiales o derivadas.

Dentro de la información de las imágenes podremos encontrar las versiones disponibles, el propio fichero de creación y mas información útil como variables de entorno o comandos que podremos ejecutar.

Capas

Las imágenes de docker están creadas a partir de capas que van definidas en el fichero Dockerfile. Una de las ventajas de este sistema es que esas capas son cacheadas y se pueden compartir entre distintas imágenes, esto es que si por ejemplo la creación de nuestra imagen consta de 10 capas, y modificamos una de esas capas, a la hora de volver a construir la imagen solo se debe ejecutar esta nueva capa, el resto permanecen igual.

Estas capas a parte de ahorrarnos peticiones de red al bajarnos una nueva versión de una imagen también ahorra espacio en disco, ya que las capas que no se hayan cambiado entre versiones no se descargarán.

Podemos ver todas estas capas con el comando docker image history nombre_imagen:version

docker image history

Para ver información detallada de la imágen podemos usar el comando docker image inspect nombre_image:version

Etiquetas

Los tags sirven para identificar las versiones de las imágenes, a la hora de listar las imágenes se listan con su tag asociado. En el ejemplo anterior de mariadb el tag que tenía descargado es latest.

Un buen ejemplo que sirve para comprender los tags y de paso ver como funcionan las capas es el siguiente:

Si vamos a la página de docker hub de mariadb podemos ver los tags en la descripción, como esto depende de cuando lo veamos, ahora mismo que lo estoy escribiendo se ve así:

docker image history

Eso son los tags, que nos dicen que por ejemplo 10.3.0 y 10.3 son iguales y 10.2.14, 10.2, 10 y latest son la misma, esto quiere decir que comparten la misma imagen.

Pues bien, voy hacer un pull de la 10.3 y de la 10.2

Pull

Con pull bajamos a nuestro equipo una imagen especifica, anteriormente las hemos bajado a la hora de crear un contenedor, en este caso la bajaremos con docker image pull mariadb:10.3

docker image pull

De la misma forma bajo la 10.2 y latest

docker image pull

Fijaos como al hacer pull de la 10.2 no descarga todo, ya que hay partes que teníamos descargada.

Listado de imágenes

Para ver las imágenes instaladas usamos docker image ls yo en mi caso he filtrado solo las de mariadb con docker image ls mariadb

docker image ls

Aquí podemos ver todas las imágenes descargadas, con su tag al lado y aquí ya podemos apreciar algo sobre los tags, si nos fijamos en 10.2 y latest las dos ocupan lo mismo y hacen referencia a la misma id, ya que las dos son la misma imagen, pero con una etiqueta diferente.

Push

No voy a mostrar ejemplo porque no tengo cuenta de dockerhub y aún no lo he probado, pero con push podremos subir cambios de la imagen a nuestro repositorio. Podríamos bajarnos el Dockerfile de mariadb, modificarlo y crear el nuestro propio, etiquetarlo y subirlo a dockerhub, a nuestra cuenta.