Cómo funciona Docker: estructura y funcionamiento

Docker se ha ganado un lugar importante en la actividad diaria de los desarrolladores a lo largo de los últimos años. Vamos a hacer un resumen de esta herramienta para comprender cómo funciona Docker entre bastidores.

Características de Docker

Una de las funciones más importantes que ofrece Docker es el tiempo de inicio instantáneo. Un contenedor Docker puede iniciarse en una fracción mínima de tiempo. Una operación muy rápida que nada tiene que ver con los minutos necesarios para iniciar una máquina virtual.

Docker utiliza las funciones del kernel de Linux para arrancar e interactuar con los contenedores. Debido a esta dependencia del kernel de Linux, cuando Docker se ejecuta en otros sistemas como MacOs, se inicia un nivel adicional de virtualización que normalmente está «enmascarado» por Docker para Mac (como usuario no notarás ninguna diferencia, salvo en términos de velocidad).

¿Qué es la virtualización?

Docker es una herramienta que se utiliza para ejecutar contenedores: los contenedores son similares a las máquinas virtuales, por lo tanto simulan una máquina que se ejecuta dentro de tu computador real. Si nunca has utilizado VirtualBox o VMware, por ejemplo, es posible que estés familiarizado con las máquinas virtuales que se utilizan para ejecutar Windows dentro de un Mac.

Una máquina virtual simula todas las partes de un computador real, incluidos la pantalla y el disco duro, que en el computador real (a menudo denominado host) son solo un gran y único archivo (llamado disco duro virtual). En una máquina virtual (o VM) que ejecuta Windows, el disco duro virtual contiene todo el código del sistema operativo Windows que puede tener un tamaño de varios gigabytes.

Windows en la VM no sabe que se está ejecutando dentro de una simulación ni básicamente dentro de un computador real, simplemente «cree» que él mismo es el sistema operativo principal. Para entendernos, Docker, al igual que VirtualBox, «virtualiza» un sistema operativo dentro de un sistema operativo host.

¿Cuál es la diferencia entre una VM y un contenedor?

Utilizar una máquina virtual puede resultar desafiante para un procesador. En el ejemplo anterior, el host de Mac no solo realiza todas las tareas en segundo plano de Mac OS, sino que también realiza todas las tareas en segundo plano de Windows, las cuales constituyen un programa pesado para el host.

El sistema operativo host tiene control sobre la potencia de procesamiento que puede entregar a un programa, y es precisamente por esta razón que las máquinas virtuales suelen funcionar con mucha lentitud.
Por este motivo, puede resultar especialmente agotador ejecutar múltiples VM de forma simultánea, ya que esto significaría pedirle a un computador que ejecute varios sistemas operativos al mismo tiempo mientras se mantienen gigantescos discos duros virtuales que contienen diferentes sistemas operativos.

La ejecución de varias instancias del mismo sistema operativo suele ser redundante e innecesaria, además de poner en riesgo la ejecución de un sistema operativo virtualizado.

Por otro lado, los contenedores comparten recursos redundantes, como algunos archivos del sistema operativo de grandes dimensiones, y los recursos de hardware se asignan dinámicamente en función de las necesidades de cada contenedor en ese momento.

cómo funciona Docker

Conclusión

Los contenedores Docker resultan muy útiles para crear entornos aislados en los que ejecutar programas separados sin que interfieran entre sí, de hecho, facilitan la actividad del desarrollador que trabajará en un entorno aislado sin interferir con la configuración del host.

Si deseas obtener más información sobre Docker, puedes leer «How to get started with Docker» para descubrir cómo escribir un archivo Docker, crear imágenes personalizadas y comprender cómo utilizar Docker Compose para organizar diferentes contenedores Docker.

Cómo utilizar Docker Compose

Docker Compose es una de las herramientas más útiles para desarrolladores y administradores de sistemas. De hecho, la mayoría de los puestos de trabajo de TI requieren conocimientos de Docker y Docker Compose. No cabe duda de que saber utilizar estas tecnologías supondrá una enorme ventaja para el desarrollo de tu carrera.

¿Qué es Docker Compose?

En pocas palabras, Docker Compose es una herramienta que te permite administrar varios contenedores Docker. ¿Recuerdas los microservicios, es decir, el concepto de subdividir una aplicación web en diferentes servicios? Pues bien, estos servicios se ejecutarán en contenedores individuales que deben administrarse y habilitarse para que puedan comunicarse entre sí. Docker Compose permite hacer precisamente eso. (más…)

Cómo crear un contenedor con Docker

Continuemos con nuestras guías de Docker. Hoy veremos en detalle un tema esencial para todos aquellos que se dedican al desarrollo web: el contenedor Docker.

Un contenedor es la instancia en ejecución de una aplicación en un entorno aislado al que se le asignan recursos de forma dinámica para la ejecución. El contenedor contiene en su interior la aplicación a ejecutar y todo lo que necesita: tiempos de ejecución, librerías, configuración, etc.

¿Cuál es la diferencia entre imagen y contenedor?

La imagen Docker es un paquete estático en el que se empaquetan todos los recursos necesarios para ejecutar una aplicación. (más…)

Cómo crear un entorno Docker óptimo

Para desarrollar software es necesario disponer de un entorno local con todos los servicios disponibles para la correcta ejecución de la aplicación que se está desarrollando.

Por ejemplo, si se está desarrollando una aplicación web con Symfony, será necesario disponer de un servidor web como Apache o Nginx, un intérprete de PHP y probablemente una base de datos en la que guardar la información, como por ejemplo, Postgre o MySQL. (más…)

Cómo crear un paquete con Docker

Cuando hablamos de paquetes, generalmente nos referimos a un elemento de software o a bibliotecas agrupadas para su reutilización a escala. De hecho, un paquete lo pueden utilizar varias aplicaciones importando o ampliando el propio paquete.

Docker es una herramienta que te facilitará la vida como desarrollador. Estamos hablando de un proyecto de código abierto que puede realizar la implementación automática de aplicaciones dentro de contenedores de software, es decir, una plataforma que te permitirá crear, probar e implementar aplicaciones a través de contenedores. (más…)

Cómo llevar a cabo la implementación con Docker

Docker es una plataforma que permite, mediante un sistema de virtualización, ejecutar programas en paquetes llamados contenedores.

Los contenedores están aislados entre sí e incluyen todos los recursos de software, incluido el sistema operativo, por lo que permiten la ejecución de la aplicación.

Deploy Docker: ejecutar una aplicación con Docker usando Docker Image

Para ejecutar la implementación de una aplicación con Docker, primero se debe disponer de una imagen. (más…)

Cómo instalar Docker: mini guía práctica

Instalar Docker en tu máquina para crear un entorno de desarrollo es muy sencillo. Veamos cómo instalarlo en Windows, Mac y Ubuntu.

Cómo instalar Docker: Windows, Mac y Ubuntu

En esta miniguía vemos cómo instalar Docker en Windows, Mac y Ubuntu. (más…)