Qué es un docker

Qué es una imagen Docker

Docker ha revolucionado la tecnología de contenedores. La plataforma de virtualización permite a los desarrolladores crear contenedores de software autosuficientes, ligeros y portátiles que facilitan y agilizan la creación, prueba y despliegue de aplicaciones.

Una imagen consiste en una colección de archivos (o capas) que reúnen todo lo necesario -como dependencias, código fuente y bibliotecas- para configurar un entorno de contenedores completamente funcional.

Un contenedor Docker es un entorno de ejecución virtualizado que proporciona capacidades de aislamiento para separar la ejecución de las aplicaciones del sistema subyacente. Es una instancia de una imagen Docker.

Cada contenedor es autónomo y se ejecuta en su propio entorno aislado, lo que garantiza que no interrumpa la ejecución de otras aplicaciones o de su sistema subyacente. Esto mejora enormemente la seguridad de las aplicaciones.

Docker define varios estados del contenedor, como creado, reiniciado, en ejecución, en pausa, salido y muerto. Dado que son posibles varios estados, y que un contenedor es sólo una instancia de la imagen, un contenedor no necesita estar en ejecución.

Ejecución de Docker

Los contenedores Docker pueden ejecutarse en cualquier lugar, en las instalaciones del centro de datos del cliente, en un proveedor de servicios externo o en la nube, en Azure. Los contenedores de imágenes Docker pueden ejecutarse de forma nativa en Linux y Windows. Sin embargo, las imágenes de Windows sólo pueden ejecutarse en hosts de Windows y las imágenes de Linux pueden ejecutarse en hosts de Linux y hosts de Windows (utilizando una VM de Linux Hyper-V, hasta ahora), donde host significa un servidor o una VM.

Los desarrolladores pueden utilizar entornos de desarrollo en Windows, Linux o macOS. En el ordenador de desarrollo, el desarrollador ejecuta un host Docker donde se despliegan las imágenes Docker, incluyendo la aplicación y sus dependencias. Los desarrolladores que trabajan en Linux o en macOS utilizan un host Docker basado en Linux, y pueden crear imágenes sólo para contenedores Linux. (Los desarrolladores que trabajan en macOS pueden editar el código o ejecutar la CLI de Docker desde macOS, pero en el momento de escribir este artículo, los contenedores no se ejecutan directamente en macOS). Los desarrolladores que trabajan en Windows pueden crear imágenes para contenedores Linux o Windows.

Para alojar contenedores en entornos de desarrollo y proporcionar herramientas adicionales para los desarrolladores, Docker envía Docker Desktop para Windows o para macOS. Estos productos instalan la máquina virtual necesaria (el host Docker) para alojar los contenedores.

Docker-compose

Docker, un subconjunto del proyecto Moby, es un marco de software para construir, ejecutar y gestionar contenedores en servidores y en la nube. El término “docker” puede referirse tanto a las herramientas (los comandos y un demonio) como al formato de archivo Dockerfile.

Antes, cuando querías ejecutar una aplicación web, comprabas un servidor, instalabas Linux, configurabas una pila LAMP y ejecutabas la aplicación. Si tu aplicación se hacía popular, practicabas un buen equilibrio de carga configurando un segundo servidor para asegurarte de que la aplicación no se colapsara por demasiado tráfico.

Sin embargo, los tiempos han cambiado y, en lugar de centrarse en servidores individuales, Internet se construye sobre conjuntos de servidores interdependientes y redundantes en un sistema comúnmente llamado “la nube”. Gracias a innovaciones como los espacios de nombres del kernel de Linux y los cgroups, el concepto de servidor pudo desprenderse de las limitaciones del hardware y convertirse, en cambio, en una pieza de software. Estos servidores basados en software se denominan contenedores, y son una mezcla híbrida del sistema operativo Linux en el que se ejecutan más un entorno de ejecución hiperlocalizado (el contenido del contenedor).

Docker anwendungsbeispiele

¡Wow! Eso es un trabalenguas. En palabras más sencillas, Docker es una herramienta que permite a los desarrolladores, administradores de sistemas, etc. desplegar fácilmente sus aplicaciones en una caja de arena (llamada contenedores) para que se ejecuten en el sistema operativo anfitrión, es decir, Linux. La principal ventaja de Docker es que permite a los usuarios empaquetar una aplicación con todas sus dependencias en una unidad estandarizada para el desarrollo de software. A diferencia de las máquinas virtuales, los contenedores no tienen una gran sobrecarga y, por tanto, permiten un uso más eficiente del sistema y los recursos subyacentes.

El estándar de la industria hoy en día es utilizar máquinas virtuales (VM) para ejecutar aplicaciones de software. Las máquinas virtuales ejecutan aplicaciones dentro de un sistema operativo invitado, que se ejecuta en un hardware virtual alimentado por el sistema operativo anfitrión del servidor.

Las máquinas virtuales son excelentes para proporcionar un aislamiento total de los procesos para las aplicaciones: hay muy pocas maneras de que un problema en el sistema operativo anfitrión pueda afectar al software que se ejecuta en el sistema operativo invitado, y viceversa. Pero este aislamiento tiene un gran coste: la sobrecarga computacional que supone virtualizar el hardware para que lo utilice un sistema operativo invitado es considerable.