¿Qué es 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.
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 #
Docker | Máquina Virtual | |
---|---|---|
Sistema Operativo | Compartido entre contenedores | Nuevo sistema operativo para cada VM |
Seguridad | Menos seguro porque el SO y el kernel son compartidos | Más seguro porque las máquinas virtuales no comparten el sistema operativo |
Rendimiento | Más rápido, incluso con varios contenedores | Más lento, especialmente con varias VM |
Memoria | Ligera | Pesada |
Portabilidad | Fácil de desplegar en distintos entornos | Difícil de portar una VM a otro sistema |
Tiempo de arranque | Segundos (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.