¿Qué es Docker?
Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

¿Qué es Docker?

Docker

Works_on_my_machineUna de las letanías más conocidas de los programadores es "¡Eh! ¡en mi ordenador funciona!". Y es que hasta la más pequeña diferencia que exista entre nuestro ordenador de trabajo y la máquina en la que finalmente se vaya a ejecutar el programa puede hacer que algo importante falle. Y claro: en tu equipo funcionaba...

Esto es especialmente cierto en el caso de las aplicaciones web, donde normalmente entran tres máquinas en juego: el ordenador del que programa/testea, el servidor de pre-producción (pre) en donde se prueban las cosas bien "en real" antes de ponerlo en el servidor de producción (pro). Hacer que todo funcione igual en los tres es una tarea complicada a veces porque no son exactamente iguales.

Por otro lado montar el entorno, tanto de pruebas como de producción, para que funcione una aplicación implica no sólo tener el mismo sistema operativo y hardware equiparable, sino también instalar y configurar todas las dependencias que haya (bibliotecas de terceros, bases de datos...), y a veces es una tarea pesada y propensa a errores.

La virtualización es una buena solución. Una máquina virtual puede clonarse y tener exactamente las mismas condiciones en todos los entornos. Lo malo de esta solución es que debemos desplegar el sistema operativo completo, es algo muy pesado que implica mover grandes archivos, cualquier actualización implica cambio completo de la máquina, etc...

Para dar respuesta a estos problemas nace la tecnología de contenedores, cuyo representante más conocido es Docker.

Docker

El objetivo de Docker es permitirte la creación paquetes estándar pensados para despliegue llamados "contenedores" que incluyen todo lo necesario para que una aplicación funcione (dependencias, servicios...) y que se aíslan del sistema subyacente para lograr que siempre funcionen exactamente igual.

Es decir, si tenemos una aplicación web, por ejemplo, nuestro contendor Docker contiene un sistema de archivos virtual en el que se incluyen, por ejemplo:

  • Nuestra aplicación
  • El runtime de la plataforma que estemos utilizando (Java, .NET...)
  • Dependencias de todo tipo (bibliotecas, herramientas de línea de comandos...)
  • Servidores (Apache, MySQL...)
  • Herramientas del sistema
  • Etc...

En realidad cualquier cosa que se pueda instalar en el sistema operativo.

Pero al contrario que una máquina virtual no es necesario mover un disco con el sistema completo, ni tampoco compartir el hardware. Se ejecuta directamente sobre el sistema operativo, no es una virtualización, es un entorno aislado de ejecución, que es diferente.

Sus ventajas son muchas:

  • Mucho más ligero (en "peso") que una máquina virtual
  • Fácil de actualizar
  • Fácil de desplegar
  • Ofrece mucho más rendimiento que una máquina virtual. Esto implica que en un mismo servidor pueden ejecutarse muchas más aplicaciones que las equivalentes si fueran máquinas virtuales, algo especialmente útil para empresas de Cloud computing.
  • Es muy seguro porque aísla la ejecución de aplicaciones, de modo que no pueden interferir entre ellas.
  • Permite realizar pruebas mucho más reales en cuanto al entorno en el que se van a ejecutar las aplicaciones reales, mejorando la calidad.

Además últimamente se está impulsando mucho la tecnología de contenedores gracias a iniciativas como The open Container Project en el que empresas como Amazon, Google, Microsoft (¡Sí!, ya hace tiempo que lo soportan en Azure y en Visual Studio) y en realidad todas las empresas más importantes del sector se están uniendo para unificar criterios. Esto promete un futuro brillante para la tecnología en los próximos años.

En el siguiente vídeo Quique Martínez nos da una visión general rápida en poco más de 3 minutos de qué es Docker.

En resumen, esto es lo que Docker puede hacer por ti:

  • Permitirte la creación de aplicaciones auto-contenidas listas para utilizar en cualquier entorno compatible.
  • Gestionar el despliegue y actualización de aplicaciones de una forma muy sencilla.
  • Aislar la ejecución de tus aplicaciones para que no interfieran con otras, ni éstas con la tuya.
  • Conseguir que muchas más aplicaciones se puedan ejecutar al mismo tiempo en el mismo hardware que en el caso de entornos virtuales.
campusMVP campusMVP es la mejor forma de aprender a programar online y en español. En nuestros cursos solamente encontrarás contenidos propios de alta calidad (teoría+vídeos+prácticas) creados y tutelados por los principales expertos del sector. Nosotros vamos mucho más allá de una simple colección de vídeos colgados en Internet porque nuestro principal objetivo es que tú aprendas. Ver todos los posts de campusMVP

No te pierdas ningún post

Únete gratis a nuestro canal en Telegram y te avisaremos en el momento en el que publiquemos uno nuevo.

Archivado en: Desarrollo Web | Herramientas

Agregar comentario