Curso Docker - 1. Qué es Docker

Curso Docker - 1. Qué es Docker

Docker es una plataforma de código abierto que nace en 2013 y que automatiza el despliegue de aplicaciones dentro de contenedores de software proporcionando una capa adicional de abstracción y automatización de virtualización a nivel de sistema operativo.

En otras palabras Docker es una herramienta para ejecutar aplicaciones en entornos aislados y nos proporciona las mismas o más ventajas que si ejecutáramos nuestra aplicación en una máquina virtual:

  • Siempre tenemos el mismo entorno. Evitamos tener inconsistencias entre entornos: desarrollo, producción, testing, etc.
  • Si estás trabajando en múltiples proyectos, puedes mantener cada uno de ellos en su imagen Docker.
  • Puedes trabajar con los proyectos de otros desarrolladores sin tener que instalar infinitas dependencias y configuraciones. Simplemente, funciona.

Aunque esto puede parecer lo mismo que una máquina virtual, Docker nos proporciona todas estas ventajas y funcionalidades sin tener que estar gestionando y configurando máquinas virtuales, gracias a los contenedores.

Gracias a Docker somos capaces de describir la infraestructura. Antes de que naciera Docker, podíamos crear una determinada infraestructura y aislarla, pero no había una manera de describirla.

Docker introdujo el Dockerfile y en él podemos describir nuestra infraestructura utilizando código y una serie de comandos.

Por qué ha triunfado Docker

Es muy difícil hoy en día no encontrar un contenedor para nuestra aplicación, y si no lo hay, seguramente podamos basarnos en otros ya existentes.
Además, los archivos Dockerfile suelen ser muy simples.

En una máquina virtual hay que orquestar diferentes servicios y procesos. La filosofía de Docker es: en cada contenedor hay una aplicación, en cada contenedor hay un servicio, en cada contenedor hay un proceso.

Al tener únicamente un proceso por contenedor, la complejidad que teníamos en las máquinas virtuales la evitamos con Docker.

Entornos de desarrollo y producción

Gracias a Docker y al Dockerfile podemos tener el mismo entorno en desarrollo y en producción, aunque con pequeñas diferencias: en desarrollo necesitamos ver los cambios en nuestro código de manera instantánea y en producción no. Además, también cambiarán algunas variables de configuración.