Tabla de contenidos
Docker almacena programas y sus dependencias en imágenes. Estos forman la base de los contenedores virtualizados que pueden ejecutarse en casi cualquier sistema operativo. Esto hace que las aplicaciones sean portátiles y sencillas, ya sea durante el desarrollo o al escalar clústeres SaaS.
Docker es un software que permite la virtualización de contenedores de aplicaciones. Las aplicaciones, incluidas sus dependencias, se pueden empaquetar en una imagen. La aplicación empaquetada de esta manera se puede ejecutar en un contenedor Docker utilizando un motor especial.
A excepción de algunas interfaces para el sistema operativo o el hardware, la aplicación está completamente aislada. Se puede crear cualquier número de contenedores a partir de una imagen y operar en paralelo, por ejemplo, para proporcionar servicios en la nube escalables. La virtualización de contenedores se presenta de muchas formas; Docker intenta que el trabajo con contenedores sea lo más práctico y sencillo posible.
Contenedor Docker frente a máquina virtual
Las máquinas virtuales contienen una gran cantidad de información, desde el hardware simulado hasta el sistema operativo y los programas instalados. El resultado: consumen mucho espacio de almacenamiento y recursos.
Las máquinas virtuales todavía tienen su razón de ser; Por ejemplo, si varias máquinas con diferentes sistemas operativos o especificaciones de hardware deben simularse en un host. Porque un contenedor Docker no contiene su propio sistema operativo ni hardware simulado. Aquí se accede al sistema del host, de modo que todos los contenedores usan el SO y el hardware juntos.
Contenedores que ahorran espacio
Por lo tanto, un contenedor Docker solo contiene la información que realmente necesitan las aplicaciones instaladas. Además del programa en sí, los contenedores contienen, por ejemplo, frameworks específicos en los que se basa el software respectivo. En resumen, el contenedor contiene ni más ni menos de lo necesario.
El contenedor comparte recursos como el hardware o el sistema operativo, que simula una máquina virtual, con el host a través de Docker Engine. El contenedor también puede acceder a bibliotecas externas si es necesario. De esta forma, se pueden subcontratar las bibliotecas que requieren varios contenedores, lo que reduce aún más el tamaño del contenedor.
Docker Engine
El corazón de la virtualización de contenedores con Docker es Docker Engine. El software forma la interfaz entre los recursos del host y los contenedores en ejecución. Todos los sistemas en los que está instalado Docker Engine pueden utilizar contenedores Docker. Docker fue diseñado originalmente para su uso en sistemas Linux. Con la virtualización a través de Virtualbox o Hyper-V, el motor también funciona en dispositivos con Windows o Mac OS. Por tanto, Docker se puede utilizar en prácticamente todos los escenarios habituales.
Sistemas escalables con Docker
Los contenedores y las imágenes que crea Docker son muy compactos en comparación con las máquinas virtuales. En un entorno de nube, esto significa grandes ahorros: se pueden proporcionar muchas más instancias con el mismo hardware. Además, los contenedores se inician más rápido que una máquina virtual, por lo que se pueden usar de manera más flexible para escalar.
Docker se puede integrar en muchos sistemas DevOps comunes, como Ansible o Puppet, lo que simplifica aún más la provisión de software a través de contenedores Docker. Una característica especial de Docker es que los contenedores se pueden controlar mediante un script. Un archivo de Docker generalmente solo tiene unas pocas líneas y contiene toda la información necesaria para iniciar una imagen de Docker. Por lo tanto, Docker es ideal para el escalado automático. Las imágenes también se pueden administrar cómodamente a través del repositorio.
Docker en desarrollo
Los contenedores que están aislados entre sí a menudo son útiles en el desarrollo: se pueden desarrollar de forma independiente entre sí y, por lo tanto, facilitan, por ejemplo, trabajar juntos en grandes proyectos. Los contenedores facilitan el empaquetado y envío de aplicaciones porque funcionan desde el primer momento en prácticamente cualquier entorno de motor Docker. Esto es particularmente interesante para la integración continua y la implementación continua, ya que cada desarrollador puede proporcionar de forma independiente su parte aislada del proyecto.
Leer: ¿Qué es LOLBAS?
Y dado que los contenedores ya tienen todas las dependencias para los programas que contienen, se pueden usar rápida y fácilmente en una amplia variedad de máquinas. Como desarrollador, puedes, por ejemplo, aislar tu subproyecto en un contenedor y transferirlo al servidor de prueba con Docker Engine. Allí puedes ejecutar las pruebas que desees sin una instalación prolongada o sin esperar la próxima compilación.
El proyecto también se puede compartir rápida y fácilmente con colegas a través de Docker Container o, en general, se puede utilizar de forma independiente del cliente respectivo. Dado que los contenedores están aislados, también es posible simular diferentes entornos para una sola pieza de software.