Docker es una plataforma de software para crear aplicaciones basadas en contenedores: entornos de ejecución pequeños y livianos que hacen uso compartido del kernel del sistema operativo pero que, por lo demás, se ejecutan de forma aislada entre sí.
Si bien los contenedores se utlizan en los sistemas Linux y Unix durante algún tiempo, Docker, un proyecto de código abierto lanzado en 2013, ayudó a popularizar la tecnología al hacer más fácil que nunca para los desarrolladores empaquetar su software para «compilar una vez y ejecutarlo en cualquier lugar».
Una breve historia de Docker
Fundada como DotCloud en 2008 por Solomon Hykes en París, lo que ahora conocemos como Docker comenzó como una plataforma como servicio (PaaS, por sus siglas en inglés) antes de girar en 2013 para centrarse en democratizar los contenedores de software subyacentes en los que se ejecutaba su plataforma.
Hykes demostró por primera vez Docker en PyCon en marzo de 2013, donde explicó que Docker se creó porque los desarrolladores seguían preguntando por la tecnología subyacente que impulsa la plataforma DotCloud. “Siempre pensamos que sería genial poder decir: ‘Sí, aquí está nuestra pieza de bajo nivel. Ahora puede hacer contenedores de Linux con nosotros e ir a hacer lo que quiera, ir a construir su plataforma. «Así que eso es lo que estamos haciendo».
Y así nació Docker, con el proyecto de código abierto ganando terreno rápidamente entre los desarrolladores y atrayendo la atención de proveedores de tecnología de alto perfil como Microsoft, IBM y Red Hat, así como de capitalistas de riesgo dispuestos a inyectar millones de dólares en proyectos innovadores. puesta en marcha. La revolución de los contenedores había comenzado.
¿Qué son los contenedores?
Como Hykes lo describió en su charla PyCon, los contenedores son «unidades autónomas de software que puede entregar desde un servidor a otro servidor, desde su computadora portátil a EC2 a un servidor gigante, y se ejecutará en de la misma manera porque está aislado a nivel de proceso y tiene su propio sistema de archivos «.
Al simplificar este proceso, Docker se acercó rápidamente a un estándar industrial de facto para contenedores. Docker permite a los desarrolladores implementar, replicar, mover y realizar copias de seguridad de una carga de trabajo de una manera optimizada, al utilizar un conjunto de imágenes reutilizables para hacer que las cargas de trabajo sean más portátiles y flexibles de lo que permitían los métodos anteriores.
Ventajas de Docker
Los contenedores Docker proporcionan una forma de crear aplicaciones que son más fáciles de ensamblar, mantener y mover que los métodos anteriores permitidos. Eso proporciona varias ventajas a los desarrolladores de software.
- Son minimalistas y permiten la portabilidad. Docker permite que las aplicaciones y sus entornos se mantengan limpios y mínimos aislándolos, lo que permite un control más granular y una mayor portabilidad.
- Permiten la componibilidad. Los contenedores facilitan a los desarrolladores trabajar en los componentes básicos de una aplicación en una unidad modular con partes fácilmente intercambiables, lo que puede acelerar los ciclos de desarrollo, la publicación de funciones y la corrección de errores.
- Los contenedores facilitan la orquestación y el escalado. Debido a que los contenedores son livianos, los desarrolladores pueden lanzar muchos de ellos para mejorar la escala de los servicios. Estos grupos de contenedores necesitan ser orquestados, que es donde normalmente entra Kubernetes.
El uso de contenedores continúa creciendo a medida que las técnicas de desarrollo nativas de la nube se convierten en el modelo principal para construir y ejecutar software, pero Docker ahora es solo una parte de ese rompecabezas.
Los restos de Docker, que incluye el tiempo de ejecución del contenedor Docker Engine de código abierto original, el repositorio de imágenes de Docker Hub y la aplicación de escritorio Docker, viven bajo el liderazgo del veterano de la empresa Scott Johnston, que busca reorientar el negocio en torno a su base de clientes principal de desarrolladores de software.