| Docker | ||
|---|---|---|
|
| ||
|
| ||
| Información general | ||
| Tipo de programa | software libre y de código abierto | |
| Autor | Solomon Hykes | |
| Desarrollador | Docker, Inc. | |
| Lanzamiento inicial | 13 de marzo de 2013 | |
| Licencia | Apache License 2.0 | |
| Información técnica | ||
| Programado en | Go | |
| Plataformas admitidas | x86-64, ARM, MIPS, ppc64le y s390x | |
| Versiones | ||
| Última versión estable | 29.6.2 (info) (16 de julio de 2026 (3 meses y 8 días)) | |
| Archivos legibles | ||
| Dockerfile | ||
| Archivos editables | ||
| Dockerfile | ||
| Enlaces | ||
Docker es un proyecto de código abierto que automatiza el despliegue de aplicaciones dentro de contenedores de software, proporcionando una capa adicional de abstracción y automatización de virtualización de aplicaciones en múltiples sistemas operativos. Docker aprovecha las funciones de aislamiento de recursos del núcleo de Linux, tales como cgroups y espacios de nombres (namespaces) para permitir que contenedores independientes se ejecuten dentro de una sola instancia de Linux, evitando la sobrecarga que implica iniciar y mantener máquinas virtuales.
El soporte del kernel Linux para los espacios de nombres aísla la vista que una aplicación tiene de su entorno operativo, incluyendo árboles de proceso, red, identificadores de usuario y sistemas de archivos montados. Por su parte, los cgroups del kernel proporcionan aislamiento de recursos, como la CPU, la memoria, el almacenamiento en bloque de E/S y de la red. Desde la versión 0.9, Docker incorpora la biblioteca libcontainer como su propio mecanismo para aprovechar directamente las capacidades de virtualización que ofrece el kernel Linux, además de poder emplear interfaces de virtualización abstraídas mediante libvirt, LXC (Linux Containers) y systemd-nspawn.
De acuerdo con la firma analista de la industria 451 Research, "Docker es una herramienta que puede empaquetar una aplicación y sus dependencias en un contenedor virtual que puede ejecutarse en cualquier servidor Linux. Esto permite una mayor flexibilidad y portabilidad en la ejecución de aplicaciones, ya sea en instalaciones físicas, la nube pública, nube privada, entre otros entornos ."

Docker implementa una API de alto nivel que proporciona contenedores livianos capaces de ejecutar procesos de forma aislada.
Construido sobre las capacidades que ofrece el kernel Linux (principalmente cgroups y namespaces), un contenedor de Docker, a diferencia de una máquina virtual, no requiere incluir un sistema operativo independiente. En su lugar, se aprovecha las funcionalidades del kernel y emplea el aislamiento de recursos (CPU, memoria, almacenamiento en bloque E / S, red, etc.) junto con namespaces separados para aislar la vista que una aplicación tiene del sistema operativo. Docker accede a la virtualización del kernel de Linux de dos formas:directamente, a través de la biblioteca libcontainer (disponible desde la versión 0.9), o indirectamente, mediante libvirt, LXC o systemd-nspawn.
Mediante el uso de contenedores, los recursos pueden aislarse, los servicios restringirse y los procesos obtienen la capacidad de disponer una visión casi completamente privada del sistema operativo, con su propio identificador de espacio de proceso, estructura de sistema de archivos e interfaces de red. Aunque múltiples contenedores comparten el mismo núcleo, cada uno de ellos puede limitarse para utilizar únicamente una cantidad definida de recursos como CPU, memoria y E / S.
El Uso de Docker para crear y gestionar contenedores puede simplificar la construcción de sistemas altamente distribuidos, ya que permite que múltiples aplicaciones, tareas de trabajos y otros procesos que se ejecuten de manera autónoma en una única máquina física o en varias máquinas virtuales. Esto facilita el despliegue de nodos a medida que se dispone de recursos o cuando surge la necesidad de ampliar la capacidad, ofreciendo así un modelo de plataforma como servicio (PaaS - Platform as a Service) para el despliegue y la escalabilidad de sistemas como Apache Cassandra, MongoDB o Riak. Además, Docker simplifica la creación y operación de carga de trabajo, colas y otros sistemas distribuidos.
Docker se puede integrar con diferentes herramientas de infraestructura, como Amazon Web Services, Ansible, Cfengine, Chef, Google Cloud Platform, DigitalOcean, IBM Bluemix, Jelastic, Jenkins, Microsoft Azure, OpenStack Nova, OpenSVC, Puppet, Salt, y Vagrant.
El proyecto Cloud Foundry Diego integra Docker con Cloud Foundry PaaS.
El proyecto GearD tiene como objetivo integrar Docker en el de Red Hat OpenShift Origin PaaS.
En respuesta a la disponibilidad de estas integraciónes, la plataforma de monitoreo, Datadog, desarrolló un reportaje sobre la tasa de adopción de los servicios de Docker por 7 000 empresas con infraestructuras basadas en la nube.
Solomon Hykes inició Docker como un proyecto interno de dotCloud, una empresa enfocada en ofrecer servicios de plataforma como servicio (PaaS), En sus primeras etapas contó con las contribuciones de ingenieros de dotCloud, entre ellos Andrea Luzzardi y Francois-Xavier Bourlet. Asimismo, Jeff Lindsay participó como colaborador independiente. Docker representa una evolución de la tecnología patentada de dotCloud, la cual, a su vez, se desarrolló sobre proyectos de código abierto anteriores como Cloudlets.
Docker fue liberado como proyecto código abierto en marzo de 2013. El 13 de marzo de 2014, con el lanzamiento de la versión 0.9, dejó de utilizar LXC como el entorno de ejecución predeterminado y lo reemplazó con su propia biblioteca, libcontainer, escrita en Go. Para el 13 de abril de 2015, el proyecto contaba con más de 20 700 estrellas de GitHub (ubicándose en la vigésima posición entre los proyectos con mayor número de estrellas), más de 4 700 bifurcaciones (forks), y cerca de 900 colaboradores.
Un análisis realizado en 2018 identificó a las siguientes organizaciones como las principales contribuyentes a Docker: Red Hat (la que más aportes realizó,incluso por encima del propio equipo de Docker), el equipo de Docker, Microsoft, IBM, Google, Cisco Systems y Amadeus IT Group.
El 29 de julio de 2020 se dio a conocer la existencia de Doki, un malware diseñado para ejecutarse en el sistema operativo Linux con el objetivo de infectar la API de contenedores Docker mal configurados. Entre sus principales acciones se encuentran las siguientes:
Docker ha adquirido relevancia en el área de los Sistemas Distribuidos debido a que permite ejecutar aplicaciones en contenedores independientes y portables, esto facilita el despliegue de múltiples servicios en diferentes servidores o nodos de una red, lo que ayuda a mantener consistencia entre entornos y mejora la escalabilidad de las aplicaciones.