5 motivos por los que deberías aprender Docker

Docker es una herramienta que todo desarrollador debería saber utilizar: automatización, control de versiones y más ventajas son las que nos proporciona.

Consigue gratis tu cuenta

Crea una API REST con Node.js y MongoDB

En este curso vas a aprender a crear una API REST con Node.js y MongoDB, además de crear un entorno de desarrollo con Docker y Docker Compose.

Comenzar ahora

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.

1. Mismo entorno en desarrollo y en producción

Gracias a Docker siempre tendremos el mismo entorno y evitamos tener inconsistencias en desarrollo, producción, testing, etc. Todas las versiones y configuraciones del software con el que hayamos creado nuestro entorno de desarrollo se replicarán en todos los entornos en los que utilicemos la imagen de Docker.

Con Docker nos olvidaremos del típico comentario "... en mi máquina funciona...".

2. Control de versiones para la infraestructura

Esta es posiblemente una de las mayores ventajas que le veo a Docker. Con el control de versiones en Docker podemos saber cuándo se han realizado cambios en las configuraciones de las máquinas y, gracias a ello, volver a desplegar nuestra infraestructura en una versión anterior en caso de que hubiese algún fallo.

3. Las aplicaciones dockerizadas no necesitan su propio sistema operativo

En una máquina virtual tenemos que gestionar el sistema operativo además de todas las configuraciones para nuestra aplicación. Sin embargo, en Docker puedes especificar toda la configuración en el Dockerfile para olvidarte de gestionar software y programas más allá de lo necesario.

Además, si en algún momento necesitas cambiar algo en tu entorno puedes cambiarlo en el Dockerfile, probarlo en tu máquina y replicarlo en el resto de equipos y servidores de tu empresa.

4. Dependencias diferentes para aplicaciones diferentes

Esta funcionalidad de Docker la considero una razón de mucho peso para aprender Docker, ya que no es nada raro que en una empresa haya varias aplicaciones desarrollándose al mismo tiempo y cada una de ellas tenga unas versiones de software diferentes. Por ejemplo, en una aplicación podemos estar utilizando PHP 7.2 y en otra PHP 7.3 y gracias a Docker no existirán conflictos entre ellas.

Esto en una máquina virtual es más complicado, ya que en el caso del ejemplo anterior tanto PHP 7.2 como PHP 7.3 estarían instaladas en el mismo sistema operativo y no sería tan sencillo utilizar una versión u otra en función de la aplicación que estemos ejecutando o desarrollando.

5. Automatización

Teniendo en cuenta que podemos versionar nuestra infraestructura y que con simples comandos podemos desplegarla en cualquiera de los entornos que estemos utilizando, Docker nos permite automatizar el despliegue de la infraestructura de una manera controlada y escalar y desplegar aplicaciones sin desperdiciar el valioso tiempo de los desarrolladores haciendo tareas repetitivas.

¿Se te ocurre algún motivo más que no hayamos mencionado?

Artículos relacionados

Entornos existentes en el ciclo de desarrollo de software y despliegue de aplicaciones

Los entornos en los que desplegamos el código son una parte fundamental del ciclo de desarrollo de software. ¿Dónde ejecuto los tests? ¿Cómo despliego a producción?


¿Quieres seguir aprendiendo?