¿Qué es una imagen en docker?


¿Qué es una imagen en docker?, es un archivo compuesto por múltiples capas, que se utiliza para ejecutar código en un contenedor de docker

oscar Escrito por oscar 05 June 2020 10096 0

Acerca del proyecto

Este post vamos a dar la definición un contenedor y las principales características que posee, adicionalmente vamos a ver porque docker usa imagenes para crear contenedores para poder trabajar.

Conocimiento previo

Para realizar este proyecto se requiere conocimiento previo de los siguientes temas, si aun no has trabajado con lo que se menciona en la siguiente tabla, allí están los links a los post para que puedas dar un repaso adicional o puedas recordar el conocimiento necesario para poder realizar este proyecto.

Proyecto Descripción
Introducción docker Iniciamos con docker, donde conoceremos los temas que vamos a trabajar en este curso, aprenderemos a usar este gestor de contenedores con todas sus funcionalidades, ademas realizaremos ejercicios prácticos para reforzar el conocimiento aprendido.
¿Qué es docker? ¿Qué es docker?, es una plataforma que permite crear e implementar aplicaciones rápidamente. En este post aprenderás a detalle la definición, sus características y la diferencia con las tecnologías de aplicaciones tradicionales.
¿Qué es un contenedor? ¿Qué es un contenedor de docker?, lo podemos definir como una forma de limitar los recursos para una aplicación, donde solo va a contener sus librerías, configuraciones, entre otros. En este post explicamos a detalle los contenedores.

¿Qué es una imagen?

Una imagen Docker es un archivo, compuesto por múltiples capas, que se utiliza para ejecutar código en un contenedor Docker. Estas imágenes son las plantillas base desde la que partimos ya sea para crear una nueva imagen o crear nuevos contenedores para ejecutar las aplicaciones.

Las imágenes se utilizan para crear contenedores ya que éstas nunca van a cambiar, esto permite crear contenedores con diferentes capas de imágenes las cuales se van a superponer sobre otras.

Las imágenes las podemos encontrar en diferentes repositorios ya sea privados o públicos, el más conocido es el docker Hub, donde vamos a encontrar todas las imágenes públicas que nosotros podemos utilizar para nuestros proyectos, básicamente lo que hacemos es descargar la imagen y empezar la utilizar creando las diferentes capas que necesitamos para que nuestra aplicación funcione.[1]

¿Qué son las capas?

Las imágenes están hechas de capas ordenadas. Se puede pensar en una capa como un conjunto de cambios en el sistema de archivos, cuando tomas todas las capas y las apilas obtienes una nueva imagen que contiene todos los cambios acumulados, ¿pero entonces cómo se gestionan las imágenes?, para ello en el almacenamiento hay varios controladores que soportan este tipo de creación de capas como lo son: AUFS, BTRFS, y overlays.

Ahora cada vez que creamos una capa para las imágenes hay que tener en cuenta el orden de cómo se están creando estas capas y que va a contener cada una de ellas, por ejemplo, si en una capa creamos un archivo, en la siguiente capa lo eliminamos y en otra capa vamos a hacer uso de él, nos va a dar algún error ya que el archivo en la última capa no va a estar contenido, es por eso que hay que tener en cuenta en qué capa se está ejecutando el programas con archivos de la imagen al final.

Lo que mantiene el seguimiento de las capas que creamos para una imagen es un limite, esta establecido de 127 capas, ademas tenemos que tener en cuenta es que cada capa va sumando al tamaño final de nuestra imagen, si vamos creando capas con archivos, por ejemplo en la capa inicial tienes un peso de 10 megabytes y tenemos 10 capas, la imagen final va a tener el peso de la imagen base más la cantidad de capas añadidas, que en este caso son 100 megabytes y esto generaría que la imagen final fuera demasiado pesada y poco limitada.

Ahora la forma en que docker trabaja para optimizar el espacio es que si muchas capas están basadas en imágenes que ya tienes descargadas y son similares, no volvera a descargar esa imagen, va a generar la nueva capa en base en la imagen, esto optimiza el espacio en el disco.

Capa de contenedor

Cada vez que Docker lanza un contenedor desde una imagen, agrega una capa de escritura, llamada capa contenedor, que almacena todos los cambios realizados en el contenedor en tiempo de ejecución.

Dado que esta capa es la única diferencia entre un contenedor operativo en vivo y la propia imagen de Docker de origen, un número ilimitado de contenedores similares puede compartir el acceso a la misma imagen subyacente mientras mantiene su propio estado individual.[2]

Capas de una imagen
Capas de una imagen

Imagen base

En términos simples, una imagen base es una primera capa vacía, que le permite construir sus imágenes Docker desde cero. Las imágenes base le dan control total sobre el contenido de las imágenes, pero generalmente están destinadas a usuarios de Docker más avanzados.

Docker Manifest

Junto con un conjunto de archivos de capa individuales, una imagen de Docker también incluye un archivo adicional conocido como manifiesto. Esta es esencialmente una descripción de la imagen en formato JSON y comprende información como etiquetas de imagen, una firma digital y detalles sobre cómo configurar el contenedor para diferentes tipos de plataforma de host.

Algunos comandos

  • docker images: Este comando se utiliza para listar todas las imágenes Docker que se han descargado en el sistema.

  • docker pull: Este comando se utiliza para descargar una imagen Docker desde un registro público o privado.

  • docker push: Este comando se utiliza para subir una imagen Docker a un registro público o privado.

  • docker build: Este comando se utiliza para construir una imagen Docker a partir de un archivo Dockerfile.

  • docker tag: Este comando se utiliza para etiquetar una imagen Docker con un nombre y una versión específicos.

  • docker rmi: Este comando se utiliza para eliminar una imagen Docker que ya no se necesita.

  • docker history: Este comando se utiliza para ver el historial de capas que componen una imagen Docker.

  • docker save: Este comando se utiliza para guardar una imagen Docker en un archivo tar.

  • docker load: Este comando se utiliza para cargar una imagen Docker desde un archivo tar.

Referencias

[1] tutsplus https://code.tutsplus.com/es/tutorials/docker-from-the-ground-up-understanding-images--cms-28165, Consultado Junio 2020

[2] https://jfrog.com/knowledge-base/a-beginners-guide-to-understanding-and-building-docker-images, Consultado Junio 2020


Comentario

Debe aceptar antes de enviar