Docker: Introducción

Última actualización: 05/10/2020

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.

¿Qué es Docker?

¿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.

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 Docker, 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 Docker no empaquetan sistema operativo, sino que usan el del host.

Dockerfile: es un documento de texto con los comandos necesarios para ejecutar la imagen.

Componentes Docker
Componentes

Docker funciona con una arquitectura cliente servidor. El cliente de Docker 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.

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.

Esquema de componentes en Docker vs Máquina Virtual
Esquema de componentes en Docker y en Máquinas Virtuales

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 VirtualContenedores Docker
El hipervisor permite ejecutar varias VM’s en una sola máquinaEmpaquetan 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 la guía de comandos básicos de Docker.

Aprende a fondo y conviértete en experto invirtiendo en tu formación a largo plazo:

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!


¡Echa un ojo a mi lista de reproducción de Big Data en Youtube!

Si te ayuda el contenido del blog, por favor considera unirte a la lista de correo para reconocer el trabajo!

Deja una respuesta