¿Qué es Docker?

Docker es una plataforma abierta para desarrollar, enviar y ejecutar aplicaciones. Le permite separar sus aplicaciones de su infraestructura para que pueda entregar software rápidamente. Con él, puede administrar su infraestructura de la misma manera que administra sus aplicaciones. Al aprovechar sus metodologías para enviar, probar e implementar el código rápidamente, puede reducir significativamente la demora entre escribir el código y ejecutarlo en producción.

Permite a los desarrolladores crear, implementar, ejecutar, actualizar y administrar contenedores: componentes ejecutables estandarizados que combinan el código fuente de la aplicación con las bibliotecas y dependencias del sistema operativo (SO) necesarias para ejecutar ese código en cualquier entorno.

Los contenedores simplifican el desarrollo y la entrega de aplicaciones distribuidas. Se han vuelto cada vez más populares a medida que las organizaciones cambian al desarrollo nativo de la nube y los entornos híbridos de múltiples nubes. Es posible que los desarrolladores creen contenedores sin él, trabajando directamente con capacidades integradas en Linux y otros sistemas operativos. Pero hace que la contenedorización sea más rápida, fácil y segura.

Un contenedor es una instancia ejecutable de una imagen. Puede crear, iniciar, detener, mover o eliminar un contenedor mediante la API o la CLI de Docker. Puede conectar un contenedor a una o más redes, adjuntarle almacenamiento o incluso crear una nueva imagen basada en su estado actual.

De forma predeterminada, un contenedor está relativamente bien aislado de otros contenedores y de su máquina host. Puede controlar qué tan aislado está la red, el almacenamiento u otros subsistemas subyacentes de un contenedor de otros contenedores o de la máquina host.

Un contenedor se define por su imagen, así como por cualquier opción de configuración que le proporcione al crearlo o iniciarlo. Cuando se elimina un contenedor, desaparece cualquier cambio en su estado que no esté almacenado en el almacenamiento persistente.

Utiliza una arquitectura cliente-servidor. El cliente de Docker (DC) se comunica con el demonio de Docker, que hace el trabajo pesado de crear, ejecutar y distribuir los contenedores de Docker. El controlador de dominio y el demonio pueden ejecutarse en el mismo sistema, o puede conectar un controlador de dominio a un demonio de Docker remoto. El DC y el daemon se comunican mediante una API REST, a través de sockets UNIX o una interfaz de red. Otro DC es Docker Compose, que le permite trabajar con aplicaciones que consisten en un conjunto de contenedores.