En esta entrada de introducción a Docker repasamos sus aspectos clave, su utilidad, ventajas y las preguntas más frecuentes sobre esta tecnología.
Contenidos
¿Qué es Docker?
Docker nos permite realizar un empaquetado de aplicaciones en estructuras llamadas contenedores. Estos contenedores incluyen todo lo necesario para que el software se ejecute correctamente, como bibliotecas, herramientas del sistema, scripts, etc.
Los contenedores se encargan de aislar el sistema de ficheros, los procesos y la utilización de recursos del sistema. De esta forma no interfiere con sus vecinos en entornos cloud multitenant, en los que interesa que múltiples aplicaciones (tenants) compartan el mismo host para ahorrar en recursos y aumentar la eficiencia del sistema.
Un contenedor es una abstracción en la capa de aplicación que empaqueta el código y las dependencias juntos. En lugar de virtualizar toda la máquina física, los contenedores virtualizan solo el sistema operativo del host.
docker.com
En los últimos años, esta tecnología ha experimentado un crecimiento impresionante. El sector tecnológico ha sabido utilizar las ventajas de los contenedores para aislar y optimizar los entornos de ejecución y han surgido sistemas de orquestación de contenedores muy populares como Kubernetes (K8s). Podemos decir que los contenedores son el futuro del despliegue en el cloud.
También resuelve el problema común al que se enfrentan los desarrolladores de software: el código funciona en una máquina y no en otra. Todo el tiempo consumido en resolver estos problemas se puede evitar usando contenedores, que aseguran que el software se ejecute de la misma manera en todos los entornos.
Componentes de Docker
Imagen: es un paquete ejecutable, ligero e independiente, que contiene todo lo necesario para ejecutar cierto software. Una imagen se compone de múltiples capas, una por cada dockerfile definido.
Docker Registry: es el lugar para almacenar imágenes y distribuirlas fácilmente. Existen registros públicos como Docker Hub o Docker Cloud. También se pueden almacenar en el registro local privado.
Contenedor: es una instancia en tiempo de ejecución de una imagen. Consiste en una aplicación aislada construida a partir de una o más imágenes. Los contenedores no empaquetan sistema operativo, sino que usan el del host.
Dockerfile: es un documento de texto con los comandos necesarios para ejecutar la imagen.
Arquitectura de Docker
Docker funciona con una arquitectura de tipo cliente servidor. El cliente se comunica con Docker Daemon, la pieza responsable de construir, desplegar y distribuir los contenedores. Ambos componentes pueden ejecutar en el mismo sistema o de forma remota comunicándose a través de la API.
El cliente de Docker es la interfaz de línea de comandos que transmite las instrucciones de los usuarios. Después de haber transmitido una orden desde el cliente hasta el demonio, éste se descarga la versión que necesite del Registry, a continuación crea el contenedor a partir de la imagen y lo ejecuta en el host.
Ventajas
Portabilidad: Permite conseguir el mismo funcionamiento en todas las máquinas y sistemas, ya que contiene todas sus propias dependencias. Resulta muy útil en las tareas de desarrollo, facilitando el entorno a medida que necesita la aplicación en cualquier ordenador. El uso de Docker incrementa el ritmo de producción de software y la productividad de los desarrolladores.
Además, al no contener el sistema operativo completo, la tecnología de contenedores es bastante más ligera que una máquina virtual (VM), por ejemplo las generadas con VirtualBox o VMWare. Además, es compatible con Vagrant, que nos permite gestionar los contenedores y las máquinas virtuales de una manera más flexible y unificada.
Esto se debe a que se construye la imagen y los contenedores por capas reutilizables. En concreto, contiene solamente las librerías, los ficheros y las configuraciones necesarias para ejecutar la aplicación.
Las máquinas virtuales son más costosas de gestionar que los contenedores. Cada máquina virtual ejecuta un sistema operativo completo dentro del sistema operativo del host. Esta característica hace a los contenedores más eficientes y rápidos para ejecutar aplicaciones aisladas de su entorno.
MÁQUINA VIRTUAL | CONTENEDOR DOCKER |
---|---|
El hipervisor permite ejecutar varias VM’s en una sola máquina | Empaquetan código y dependencias juntas |
Cada VM incluye una copia del sistema operativo, aplicaciones, binarios, etc. | Varios contenedores pueden correr en la misma máquina compartiendo el kernel |
Arranque “lento” | Ocupan menos espacio que una VM |
Arranque instantáneo |
Para conseguir el aislamiento de los contenedores, hacen uso de utilidades linux. Para aislar los procesos se usa el concepto de namespaces y para aislar los recursos de un proceso se usan control groups (cgroups).
Siguientes Pasos y Formación
Aprende los comandos más usados en esta guía de comandos básicos de Docker.
También, te recomiendo invertir en tu formación a largo plazo en esta tecnología fundamental. Aquí tienes mi curso recomendado:
Docker, de principiante a experto
Este curso disponible en Udemy te enseñará a usar Docker en más de 8 horas de vídeo también en español. Entenderás todos los conceptos como imágenes, contenedores, volúmenes, redes y Docker Compose.
Además, te recomiendo los siguientes libros:
Preguntas frecuentes – FAQ
¿Qué es Docker y para qué sirve?
Docker es una plataforma que proporciona software en contenedores usando virtualización a nivel de sistema operativo (Kernel Linux). Su utilidad principal es distribuir y ejecutar software contenerizado, consiguiendo portabilidad.
¿Cómo funciona Docker?
Docker usa partes del Kernel de Linux como los namespaces para crear contenedores sobre el sistema operativo y desplegar automáticamente software.
¿Por qué Docker es tan popular?
Docker se ha hecho muy popular ya que es una herramienta que facilita mucho la creación y la ejecución de aplicaciones con contenedores. Resulta muy útil en el desarrollo, proporcionando el entorno a medida (librerías, dependencias, etc.) que necesita la aplicación.
¿Qué es una imagen Docker?
Una imagen es un fichero inmutable que contiene una instancia de un contenedor. Las imágenes producen un contenedor en la ejecución y se almacenan en un registro de Docker.
¿Es Docker gratis?
Docker CE es gratuito. También existe la versión certificada, llamada Docker EE, que incluye el soporte así como utilidades extra.
A continuación el vídeo-resumen. ¡No te lo pierdas!