¿Qué es Docker? #

Docker

Documentación oficial #

¿Qué es Docker? #

Docker es una plataforma abierta de software que permite desarrollar, enviar y ejecutar aplicaciones. Permitiendo separar las aplicaciones de la infraestructura para poder entregar software de manera rápida y fácilmente.

Al utilizar las metodologías que Docker proporciona para enviar, probar e implementar código de manera ágil, lo cual reduce de manera significativa el tiempo necesario tanto para desarrollar como para ejecutar aplicaciones en entornos de producción.

¿Cómo funciona Docker? #

Esta tecnología utiliza el kernel de linux y sus funciones, como grupos de control y espacios de nombres, para dividir los procesos y ejecutarlos de manera independiente. Este es el concepto de contenedor que Docker utiliza para aislar las aplicaciones.

Contenedores #

Los contenedores son una manera de encapsular una aplicación y todas las dependencias necesarias en un entorno autocontenido, lo que facilita su portabilidad y despliegue en diferentes sistemas.

Cada contenedor tiene su propio entorno aislado y no afecta ni interactúa directamente con otros contenedores en el mismo sistema.

Imágenes #

En Docker, las imágenes son plantillas de solo lectura que contienen un sistema operativo base, junto con un conjunto de instrucciones para instalar y configurar aplicaciones específicas.

Una imagen de Docker se crea a través de un archivo llamado Dockerfile, que especifica las capas y las instrucciones necesarias para construir la imagen. Se puede definir el sistema operativo base, instalar dependencias, copiar archivos, configurar variables de entorno y mucho más en un Dockerfile.

Es importante destacar que las imágenes de Docker son inmutables, lo que significa que no se pueden modificar directamente una vez que se han creado. Sin embargo, se puede crear una nueva imagen basada en una existente, realizando modificaciones adicionales a través de un nuevo Dockerfile.

Comparación con máquinas virtuales #

La principal diferencia entre los contenedores y las máquinas virtuales es que los contenedores comparten el mismo sistema operativo, mientras que las máquinas virtuales utilizan su propio sistema operativo. Observe la siguiente imagen.

Docker vs VM

Las máquinas virtuales ocupan un programa intermediario llamado hypervisor el cual se encarga de virtualizar los recursos de la máquina física con su sistema operativo anfitrión para que puedan ser utilizados por las máquinas virtuales. De modo que cada máquina virtual tiene su propio sistema operativo huésped.

Por otro lado, los contenedores utilizan los recursos del sistema operativo anfitrión por medio de un programa intermediario llamado Container Engine. Este programa se encarga de virtualizar los recursos del sistema operativo anfitrión para que puedan ser utilizados por los contenedores.

Comparativa #

DockerMáquina Virtual
Sistema OperativoCompartido entre contenedoresNuevo sistema operativo para cada VM
SeguridadMenos seguro porque el SO y el kernel son compartidosMás seguro porque las máquinas virtuales no comparten el sistema operativo
RendimientoMás rápido, incluso con varios contenedoresMás lento, especialmente con varias VM
MemoriaLigeraPesada
PortabilidadFácil de desplegar en distintos entornosDifícil de portar una VM a otro sistema
Tiempo de arranqueSegundos (Rápido)Minutos (Lento)

Conclusión #

Docker soluciona el problema de que una aplicación funcione en distintos entornos. Por medio de la forma de portar el software de manera sencilla. Por lo que vuelve la tarea de desarrollo y despliegue de aplicaciones mucho más sencilla.