Docker es una plataforma de código abierto (Open Source) para que desarrolladores y administradores de sistemas puedan construir, cargar, y ejecutar aplicaciones. Consiste en un entorno de ejecución ligero, portable y herramientas de empaquetado, como resultado se puede implementar más rápido y ejecutar la misma aplicación sin cambios tanto en portátiles, centros de proceso de datos o máquinas virtuales en la nube.
Docker es una herramienta que permite crear contenedores. Estos contenedores, son sistemas de virtualización ligera que nos permiten tener aplicaciones empaquetadas, de forma que sean autosuficientes (al disponer de todas las bibliotecas y dependencias que necesiten), lo cual facilita que posteriormente puedan ser desplegados en cualquier otro sistema operativo compatible con Docker.
Docker es una plataforma para la construcción, el transporte y la ejecución de aplicaciones distribuidas. Le da a los programadores, equipos de desarrollo y administradores de sistemas la caja de herramientas común que necesitan para disponer de un sistema distribuido y en red.
Construir: Docker permite componer una aplicaciones desde micro servicios, sin preocuparse por las incoherencias entre los entornos de desarrollo y producción, y sin bloquear ninguna plataforma ni lenguaje de programación.
Portabilidad de aplicaciones y flexibilidad de la infraestructura: Empaquetar una aplicación, dependencias y configuraciones juntos para asegurarse de que su aplicación funcionará sin problemas en cualquier entorno y en cualquier infraestructura al igual que en la máquina original.
Actualización dinámica, las aplicaciones construidas en contenedores Docker son fáciles de actualizar y escalar sin preocuparse de los demás contenedores. Los contenedores ligeros pueden manejar en un segundo gran cantidad de recursos.
Docker es un proyecto de código abierto con el que podremos crear contenedores fácilmente. Estos contenedores se podrían definir como máquinas virtuales ligeras, menos exigentes con los chips y memorias de los equipos donde se ejecutarán. Sus principales ventajas son:
- Portabilidad: El contenedor Docker podremos desplegarlo en cualquier otro sistema (que soporte esta tecnología), con lo que nos ahorraremos el tener que instalar en este nuevo entorno todas aquellas aplicaciones que normalmente usemos.
- Ligereza: El tamaño de este sistema no tiene comparación con cualquier otro sistema de virtualización más convencional que estemos acostumbrados a usar. Por poner un ejemplo, cualquier imagen de Ubuntu que queramos usar ocupará en torno a 1Gb si contamos únicamente con la instalación limpia del sistema. En cambio, un Ubuntu con Apache y una aplicación web, ocuparía alrededor de 180Mb, lo que nos demuestra un significativo ahorro a la hora de almacenar diversos contenedores que podamos desplegar con posterioridad.
- Autosuficiencia: Un contenedor Docker no contiene todo un sistema completo, sino únicamente aquellas librerías, archivos y configuraciones necesarias para desplegar las funcionalidades que contenga. Asimismo, Docker se encarga de la gestión del contenedor y de las aplicaciones que contenga. Además, su ligereza hace que en equipos con algunos años se desenvuelva prácticamente igual que el sistema anfitrión, aparte de ofrecernos un entorno a base de capas para controlar los cambios que se hagan en la máquina virtual o contenedor.
Para obtener esta fluidez, Docker extiende LXC (LinuX Containers), un sistema de virtualización ligero que permite crear múltiples sistemas totalmente aislados entre sí sobre la misma máquina o sistema anfitrión. Y no se emula un sistema operativo completo, sólo las librerías y sistemas de archivos necesarios para la utilización de las aplicaciones que tengamos instaladas en cada contenedor.
El notable éxito de esta tecnología se puede comprobar, además de por sus virtudes, por la aceptación e implicación de grandes empresas que acogen este tipo de servicios en entornos de producción. Ejemplo de ello serían Digital Ocean y Google, que integran soporte para este software.
También sería destacable la inversión de Microsoft en adaptar esta tecnología al mundo Windows, ya que en la versión de Windows Server 2016 Preview existente en este momento, ya incluye la posibilidad de instalar una versión de Docker específica para este entorno.
Docker se compone de tres elementos fundamentales:
- Contenedores Docker: Son como un directorio, contienen todo lo necesario para que una aplicación pueda funcionar sin necesidad de acceder a un repositorio externo al contenedor. Cada uno de éstos es una plataforma de aplicaciones segura y aislada del resto que podemos encontrar o desplegar en la misma máquina host. Para hacer un símil con las tecnologías actuales, un contenedor sería como una máquina virtual.
- Imágenes Docker: La imagen Docker podríamos entenderla como un sistema operativo con aplicaciones instaladas. Sobre esta base, podremos empezar a añadir aplicaciones que vayamos a necesitar en otro equipo donde tengamos intención de usar la imagen. Docker nos ofrece una forma muy sencilla de actualizar las imágenes que tengamos creadas, así como para crear imágenes nuevas, sería similar a las plantillas que actualmente se tienen preparadas para crear nuevas máquinas virtuales.
- Repositorios Docker: También conocidos como Registros Docker, contienen imágenes creadas por los usuarios y puestas a disposición del público. Podemos encontrar repositorios públicos y gratuitos en su totalidad o repositorios privados donde se pueden comprar las imágenes que necesitemos. Estos registros, permiten desarrollar o desplegar aplicaciones de forma simple y rápida en base a plantillas, reduciendo el tiempo de creación o implementación de aplicaciones o sistemas. También podemos optar por instalar nuestro propio repositorio o Registro Docker para usarlo internamente en nuestra organización que, como no podía ser de otra forma, se instala en un contenedor Docker.
Resumen con las principales características y funcionalidades de Docker:
- Autogestión de los contenedores.
- Es fácil de instalar.
- Compatible con muchos sistemas operativos y sistemas cloud.
- Aplicaciones libres de las dependencias instaladas en el sistema anfitrión.
- Capacidad para desplegar multitud de contenedores en un mismo equipo físico.
- Puesta en marcha de los servicios en un abrir y cerrar de ojos.
- Contenedores muy livianos que facilitan su almacenaje, transporte y despliegue.
- Capacidad para ejecutar una amplia gama de aplicaciones (prácticamente cualquier cosa que se nos ocurra podrá ejecutarse en un contenedor Docker).
- Compatibilidad multi-sistema, podremos desplegar nuestros contenedores en multitud de plataformas.
- La aplicación base de Docker gestionará los recursos existentes para asignarlos responsablemente entre los contenedores desplegados.
- Podremos establecer una base desde la que comenzar nuestros proyectos, lo que nos ahorrará el tiempo de preparar el entorno para cada uno de ellos.
- Podremos compartir nuestros contenedores para aumentar los repositorios de Docker, así como beneficiarnos de los que compartan los demás.
No hay comentarios:
Publicar un comentario