
Docker es un conjunto de productos que utiliza la virtualización a nivel de sistema operativo para distribuir software en paquetes llamados contenedores . Docker automatiza el despliegue de aplicaciones dentro de contenedores ligeros, lo que permite que se ejecuten de forma consistente en diferentes entornos informáticos.
El software principal que ejecuta y administra estos contenedores se llama Docker Engine . Docker se lanzó por primera vez en 2013 y continúa siendo desarrollado por Docker, Inc. La plataforma incluye planes gratuitos y de pago.
Historia
Solomon Hykes inició el proyecto Docker en Francia como un proyecto interno dentro de dotCloud , una empresa de plataforma como servicio . [ 5 ]
dotCloud Inc. fue fundada por Kamel Founadi, Hykes y Sebastien Pahl [ 6 ] durante el grupo de incubación de startups de Y Combinator Summer 2010 y se lanzó en 2011, y cambió su nombre a Docker Inc en 2013. [ 7 ]
Docker se presentó al público en Santa Clara en PyCon en 2013. [ 8 ] Se lanzó como código abierto en marzo de 2013. [ 9 ] En ese momento, usaba LXC como su entorno de ejecución predeterminado. Un año después, con el lanzamiento de la versión 0.9, Docker reemplazó LXC con su propio componente, libcontainer , que fue escrito en el lenguaje de programación Go . [ 10 ] [ 11 ]
En 2017, Docker creó el proyecto Moby para la investigación y el desarrollo abiertos. [ 12 ] En marzo de 2026, Communications of the ACM presentó a Docker como artículo de portada en un artículo retrospectivo de la última década. [ 13 ]
Adopción
- 19 de septiembre de 2013: Red Hat y Docker anunciaron una colaboración en torno a Fedora , Red Hat Enterprise Linux (RHEL) y OpenShift . [ 14 ]
- 15 de octubre de 2014: Microsoft anunció la integración del motor Docker en Windows Server , así como la compatibilidad nativa con el rol de cliente Docker en Windows. [ 15 ] [ 16 ]
- Noviembre de 2014: Se anunciaron los servicios de contenedores Docker para Amazon Elastic Compute Cloud (EC2). [ 17 ]
- November 10, 2014: Docker announced a partnership with Stratoscale.[18]
- December 4, 2014: IBM announced a strategic partnership with Docker that enables Docker to integrate more closely with the IBM Cloud.[19]
- June 22, 2015: Docker and several other companies announced that they were working on a new vendor and operating-system-independent standard for software containers.[20][21]
- December 2015: Oracle Cloud added Docker container support after acquiring StackEngine, a Docker container startup.[22]
- March 2016: Docker for Mac and Windows betas released.[23][24]
- April 2016: Windocks, an independent software vendor released a port of Docker's open source project to Windows, supporting Windows Server 2012 R2 and Server 2016, with all editions of SQL Server 2008 onward.[25]
- May 2016: analysis showed the following organizations as main contributors to Docker: The Docker team, Cisco, Google, Huawei, IBM, Microsoft, and Red Hat.[26]
- June 8, 2016: Microsoft announced that Docker could now be used natively on Windows 10.[27]
- January 2017: An analysis of LinkedIn profile mentions showed Docker presence grew by 160% in 2016.[28]
- May 6, 2019: Microsoft announced the second version of Windows Subsystem for Linux (WSL). Docker, Inc. announced that it had started working on a version of Docker for Windows to run on WSL 2.[29] In particular, this meant Docker could run on Windows 10 Home (previously it was limited to Windows Pro and Enterprise since it used Hyper-V).
- August 2020: Microsoft announced a backport of WSL2 to Windows 10 versions 1903 and 1909 (previously WSL2 was available only on version 2004)[30] and Docker developers announced availability of Docker for these platforms.[31]
- August 2021: Docker Desktop for Windows and MacOS was no longer available free of charge for enterprise users. Docker ended free Docker Desktop use for larger business customers and replaced its Free Plan with a Personal Plan. Docker Engine on Linux distributions remained unaffected.[32]
- Diciembre de 2023: Docker adquirió AtomicJar para ampliar sus capacidades de prueba. [ 33 ]
Diseño

Los contenedores están aislados entre sí y agrupan su propio software, bibliotecas y archivos de configuración; pueden comunicarse entre sí a través de canales bien definidos. [ 35 ] Debido a que todos los contenedores comparten los servicios de un único núcleo del sistema operativo , utilizan menos recursos que las máquinas virtuales . [ 36 ]
Docker puede empaquetar una aplicación y sus dependencias en un contenedor virtual que, en principio, puede ejecutarse en cualquier ordenador Linux , Windows o macOS . Esto permite que la aplicación se ejecute en diversos entornos, como en las instalaciones , en la nube pública (véase computación descentralizada , computación distribuida y computación en la nube ) o privada . [ 37 ] Al ejecutarse en Linux, Docker utiliza las características de aislamiento de recursos del kernel de Linux (como cgroups y espacios de nombres del kernel ) y un sistema de archivos con capacidad de unión (como OverlayFS ) [ 38 ] para permitir que los contenedores se ejecuten dentro de una única instancia de Linux, evitando la sobrecarga de iniciar y mantener máquinas virtuales . Docker en macOS utiliza una máquina virtual Linux para ejecutar los contenedores. [ 39 ]
Debido a que los contenedores Docker son ligeros , un solo servidor o máquina virtual puede ejecutar varios contenedores simultáneamente. [ 40 ] Un análisis de 2018 encontró que un caso de uso típico de Docker implica ejecutar ocho contenedores por host, y que una cuarta parte de las organizaciones analizadas ejecutan 18 o más por host. [ 41 ] También se puede instalar en una computadora de placa única como la Raspberry Pi . [ 42 ]
El soporte del kernel de Linux para espacios de nombres aísla principalmente [ 43 ] la vista de una aplicación del entorno operativo, incluyendo árboles de procesos, red, ID de usuario y sistemas de archivos montados, mientras que los cgroups del kernel proporcionan limitación de recursos para memoria y CPU. [ 44 ] Desde la versión 0.9, Docker incluye su propio componente (llamado libcontainer ) para usar las funciones de virtualización proporcionadas directamente por el kernel de Linux, además de usar interfaces de virtualización abstractas a través de libvirt , LXC y systemd-nspawn . [ 10 ] [ 34 ] [ 37 ] [ 45 ]
Docker implementa una API de alto nivel para proporcionar contenedores ligeros que ejecutan procesos de forma aislada. [ 9 ]
Componentes
La oferta de software como servicio de Docker consta de tres componentes:
- Software
- El demonio de Docker , llamado
dockerd, es un proceso persistente que administra los contenedores de Docker y maneja los objetos de los contenedores. El demonio escucha las solicitudes que se envían a través de la API de Docker Engine. [ 46 ] [ 47 ] El programa cliente de Docker, llamadodocker, proporciona una interfaz de línea de comandos (CLI) que permite a los usuarios interactuar con los demonios de Docker. [ 46 ] [ 48 ] - objetos
- Los objetos Docker son diversas entidades que se utilizan para ensamblar una aplicación en Docker. Las clases principales de objetos Docker son imágenes, contenedores y servicios. [ 46 ]
- Un contenedor Docker es un entorno estandarizado y encapsulado que ejecuta aplicaciones. [ 49 ] Un contenedor se gestiona mediante la API o la CLI de Docker . [ 46 ]
- Una imagen de Docker es una plantilla de solo lectura que se utiliza para crear contenedores. Las imágenes se utilizan para almacenar y distribuir aplicaciones. [ 46 ]
- Un servicio Docker permite escalar contenedores a través de múltiples demonios Docker. El resultado se conoce como un enjambre , un conjunto de demonios que cooperan y se comunican a través de la API de Docker. [ 46 ]
- Registros
- Un registro de Docker es un repositorio de imágenes de Docker. Los clientes de Docker se conectan a los registros para descargar ("pull") imágenes para su uso o cargar ("push") imágenes que han creado. Los registros pueden ser públicos o privados. El principal registro público es Docker Hub. Docker Hub es el registro predeterminado donde Docker busca imágenes. [ 46 ] [ 50 ] Los registros de Docker también permiten la creación de notificaciones basadas en eventos. [ 51 ]
Un Dockerfile es un archivo de texto que normalmente especifica varios aspectos de una imagen Docker: la distribución de Linux , los comandos de instalación para el entorno de ejecución del lenguaje de programación y el código fuente de la aplicación.
Un ejemplo de Dockerfile: [ 52 ]
ARG CODE_VERSION = última DESDE ubuntu:${CODE_VERSION}COPIAR ./examplefile.txt /examplefile.txt ENV MY_ENV_VARIABLE = "valor_de_ejemplo"EJECUTAR apt-get update # Montar un directorio desde el volumen de Docker# Nota: Esto se suele especificar en el comando 'docker run'.VOLUMEN [ "/myvolume" ]# Exponer un puerto (22 para SSH)EXPOSICIÓN 22Docker Compose es una herramienta para definir y ejecutar aplicaciones Docker de múltiples contenedores. [ 53 ] Utiliza archivos YAML para configurar los servicios de la aplicación y realiza el proceso de creación e inicio de todos los contenedores con un solo comando. La docker composeutilidad CLI permite a los usuarios ejecutar comandos en múltiples contenedores a la vez; por ejemplo, crear imágenes, escalar contenedores, ejecutar contenedores que se detuvieron, y más. [ 54 ] Los comandos relacionados con la manipulación de imágenes o las opciones interactivas del usuario no son relevantes en Docker Compose porque se dirigen a un solo contenedor. [ 55 ] El docker-compose.ymlarchivo se utiliza para definir los servicios de una aplicación e incluye varias opciones de configuración. Por ejemplo, la buildopción define opciones de configuración como la ruta del Dockerfile, la commandopción permite anular los comandos Docker predeterminados, y más. [ 56 ] La primera versión beta pública de Docker Compose (versión 0.0.1) se publicó el 21 de diciembre de 2013. [ 57 ] La primera versión lista para producción (1.0) estuvo disponible el 16 de octubre de 2014. [ 58 ]
Docker Swarm proporciona funcionalidad de clustering nativa para contenedores Docker, que convierte un grupo de motores Docker en un único motor Docker virtual. [ 59 ] En Docker 1.12 y versiones posteriores, el modo Swarm está integrado con Docker Engine. [ 60 ] La utilidad docker swarmCLI [ 61 ] permite a los usuarios ejecutar contenedores Swarm, crear tokens de descubrimiento, listar nodos en el clúster y más. [ 62 ] La docker nodeutilidad CLI permite a los usuarios ejecutar varios comandos para administrar nodos en un swarm, por ejemplo, listar los nodos en un swarm, actualizar nodos y eliminar nodos del swarm. [ 63 ] Docker administra swarms utilizando el algoritmo de consenso Raft . Según Raft, para que se realice una actualización, la mayoría de los nodos Swarm deben estar de acuerdo en la actualización. [ 64 ] [ 65 ] Además de la CLI, es una herramienta diseñada para administrar servicios Swarm con mayor flexibilidad. Puede utilizar un archivo de configuración muy similar a un , con algunos matices. El uso de en lugar de ofrece varias ventajas, como la capacidad de administrar un clúster Swarm en varias máquinas o la capacidad de trabajar con combinado con , una característica que permite ejecutar comandos Docker en un host remoto, lo que permite la administración remota de contenedores.docker swarmdocker stackdocker-compose.ymldocker stackdocker composedocker secretdocker context
Docker Volume facilita la persistencia independiente de datos, lo que permite que los datos permanezcan incluso después de que el contenedor se elimine o se vuelva a crear. [ 66 ]
Modelo de licencia
- Docker Engine tiene licencia Apache License 2.0 . Docker Desktop distribuye algunos componentes con licencia GNU General Public License . Docker Desktop no es gratuito para grandes empresas. [ 67 ]
- Los archivos Dockerfile pueden licenciarse bajo una licencia de código abierto. El alcance de dicha declaración de licencia se limita al Dockerfile y no a la imagen del contenedor. [ 68 ]
Véase también
- DevOps
- Cadena de herramientas DevOps
- Visor g
- Kubernetes
- Lista de contenedores Linux
- Microservicios
- Iniciativa de contenedores abiertos
- Virtualización a nivel de sistema operativo
- Podman
- Arquitectura de componentes de servicio
- Apptainer (anteriormente Singularity ): una alternativa a Docker para clústeres de computación de alto rendimiento (HPC).
Referencias
- ↑ Barbier, Julien (9 de junio de 2014). "Ya está aquí: Docker 1.0" . Docker . Docker, Inc. Recuperado el 30 de septiembre de 2019 .
- ↑"v29.6.2". July 16, 2026. Retrieved July 18, 2026.
- ↑"Docker source code". docker/distribution repo. Docker, Inc. October 12, 2015. Retrieved October 24, 2015– via GitHub.
- ↑"Docker Desktop license agreement". September 11, 2024.
- ↑"One home for all your apps". dotcloud.com. Archived from the original on May 17, 2014. Retrieved May 8, 2014.
- ↑Hykes, Solomon (March 28, 2018). "Au Revoir". docker.com. Retrieved January 23, 2021.
{{cite web}}: CS1 maint: deprecated archival service (link) - ↑"About the dotCloud Platform". dotCloud. Archived from the original on July 2, 2014. Retrieved June 23, 2019.
- ↑"The future of Linux Containers". DotCloud Channel. March 21, 2013. Retrieved July 13, 2018– via YouTube.
- 12Avram, Abel (March 27, 2013). "Docker: Automated and Consistent Software Deployments". InfoQ. Retrieved August 9, 2013.
- 12Vaughan-Nichols, Steven J. (June 11, 2014). "Docker libcontainer unifies Linux container powers". ZDNet. Retrieved July 30, 2014.
- ↑Swan, Chris (March 13, 2014). "Docker drops LXC as default execution environment". InfoQ. Retrieved January 20, 2015.
- ↑"Demystifying the Relationship Between Moby & Docker – Welcome to Collabnix". May 6, 2017.
- ↑Madhavapeddy, Anil; Scott, David J.; Cormack, Justin (March 1, 2026). "A Decade of Docker Containers". Communications of the ACM. 69 (3): 56–65. doi:10.1145/3761803. ISSN 0001-0782.
- ↑ "DotCloud cambia de rumbo y triunfa con Docker, el servicio en la nube que ahora forma parte de Red Hat OpenShift" . TechCrunch . 19 de septiembre de 2013. Consultado el 20 de enero de 2014 .
- ↑ Foley, Mary Jo (15 de octubre de 2014). "La compatibilidad con contenedores Docker llegará a la próxima versión de Windows Server de Microsoft" . ZDNet . Consultado el 16 de octubre de 2014 .
- ↑ Guthrie, Scott (15 de octubre de 2014). "Docker y Microsoft: Integración de Docker con Windows Server y Microsoft Azure" . Blog de ScottGu . Microsoft . Consultado el 12 de enero de 2015 .
- ↑ Barr, Jeff (13 de noviembre de 2014). "Amazon EC2 Container Service (ECS) – Gestión de contenedores para la nube de AWS" . Blog de Amazon Web Services . Consultado el 29 de abril de 2017 .
- ↑ Rath, John (10 de noviembre de 2014). "Stratoscale recauda 32 millones de dólares para construir nubes OpenStack compatibles con Docker en servidores estándar" . Consultado el 3 de enero de 2016 .
- ↑ "IBM y Docker anuncian una alianza estratégica para ofrecer aplicaciones empresariales en la nube y en las instalaciones" . IBM . 4 de diciembre de 2014. Archivado del original el 10 de enero de 2015. Consultado el 20 de abril de 2015 .
- ↑ Lardinois, Frederic (22 de junio de 2015). "Docker, CoreOS, Google, Microsoft, Amazon y otros se unen para desarrollar un estándar común de contenedores" . TechCrunch . Consultado el 8 de agosto de 2015 .
- ↑ Siluk, Shirley (22 de junio de 2015). "Docker y gigantes tecnológicos se unen en un proyecto de contenedores abiertos" . cio-today.com . Archivado del original el 23 de septiembre de 2015. Consultado el 8 de agosto de 2015 .
- ↑ McLaughlin, Kevin (22 de diciembre de 2015). "Oracle adquiere la empresa emergente de contenedores Docker StackEngine y planea un centro de computación en la nube en Austin" . CRN . Consultado el 13 de enero de 2022 .
- ↑ "Docker para Mac y Windows Beta: la forma más sencilla de usar Docker en tu portátil" . Blog de Docker . 24 de marzo de 2016. Archivado del original el 24 de marzo de 2016. Consultado el 11 de marzo de 2026 .
- ↑Madhavapeddy, Anil; Scott, David J.; Ferris, Patrick; Gibb, Ryan T.; Gazagnaire, Thomas (August 5, 2025). "Functional Networking for Millions of Docker Desktops (Experience Report)". Proceedings of the ACM on Programming Languages. 9 (ICFP): 597–615. doi:10.1145/3747525. ISSN 2475-1421.
- ↑Yegulalp, Serdar (April 4, 2016). "Windocks does what Docker and Microsoft can't do". InfoWorld. Retrieved October 27, 2018.
- ↑"Docker – Updated project statistics". GitHub Gist. Retrieved August 22, 2016.
- ↑Sarkar, Dona (June 8, 2016). "Announcing Windows 10 Insider Preview Build 14361". Windows Blogs. Microsoft. Retrieved June 19, 2016.
- ↑Mullany, Michael. "Docker Momentum Analysis 2016". LinkedIn Pulse. Retrieved January 5, 2017.
- ↑Vaughan-Nichols, Steven (June 18, 2019). "Docker embraces Windows Subsystem for Linux 2". ZDNet. CBS Interactive.
- ↑"WSL 2 Support is coming to Windows 10 Versions 1903 and 1909". Windows Command Line. August 20, 2020. Retrieved August 21, 2020.
- ↑"Docker Desktop & WSL 2 - Backport Update". Docker Blog. August 20, 2020. Retrieved August 21, 2020.
- ↑Carey, Scott (August 31, 2021). "Docker Desktop is no longer free for enterprise users". InfoWorld. Retrieved October 18, 2021.
- ↑Miller, Ron (December 11, 2023). "Docker acquires AtomicJar, a testing startup that raised $25M in January". TechCrunch. Retrieved December 13, 2023.
- 12"Docker 0.9: Introducing execution drivers and libcontainer". Docker Blog. Docker, Inc. March 10, 2014. Retrieved January 20, 2015.
- ↑"Use containers to Build, Share and Run your applications". docker.com.
- ↑ "¿Qué es un contenedor?" . docker.com . Docker, Inc. Consultado el 13 de mayo de 2019 .
- 1 2 Noyes, Katherine (1 de agosto de 2013). "Docker: Un 'contenedor de envío' para código Linux" . Linux.com . Archivado del original el 8 de agosto de 2013. Recuperado el 9 de agosto de 2013 .
- ↑ "Documentación para seleccionar un controlador de almacenamiento" . Documentación de Docker . Consultado el 7 de diciembre de 2016 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ "Primeros pasos con Docker para Mac" . docker.com . Docker, Inc. Consultado el 27 de septiembre de 2018 .
- ↑ K., Chris (14 de enero de 2019). "Contenedores ligeros de Windows: Uso del aislamiento de procesos de Docker en Windows 10" . Poweruser . Recuperado el 2 de agosto de 2019.
Contenedores reales más "ligeros" (a través del llamado aislamiento de procesos), donde los procesos en contenedores se ejecutan directamente en el sistema anfitrión; todos los procesos en el anfitrión y en los contenedores comparten el mismo kernel de Windows. Esto es similar a cómo funcionan los contenedores en Linux.
- ↑ "8 datos sorprendentes sobre la adopción real de Docker" . Datadog . Junio de 2018. Consultado el 4 de septiembre de 2019 .
- ↑ Gupta, Devender (13 de octubre de 2022). "Cómo instalar Docker en Raspberry Pi" . Gizmoxo . Archivado del original el 14 de febrero de 2025. Consultado el 15 de octubre de 2022 .
{{cite web}}: CS1 maint: bot: estado de la URL original desconocido ( enlace ) - ↑ Walsh, Dan (15 de septiembre de 2014). "Otra razón más por la que los contenedores no contienen: llaveros del kernel" . projectatomic.io . Consultado el 13 de abril de 2015 .
- ↑ "Limitar los recursos de un contenedor" . Documentación de Docker . Consultado el 7 de marzo de 2018 .
- ↑ "libcontainer – implementación de referencia para contenedores" . Repositorio docker/libcontainer . Docker, Inc. Recuperado el 30 de julio de 2014 – vía GitHub .
- 1 2 3 4 5 6 7 "Descripción general de Docker" . Documentación de Docker . Docker, Inc. Consultado el 26 de febrero de 2018 .
- ↑ "dockerd" . Documentación de Docker . Docker, Inc. Consultado el 26 de febrero de 2018 .
- ↑ "Utilice la línea de comandos de Docker" . Documentación de Docker . Docker, Inc. Consultado el 26 de febrero de 2018 .
- ↑ "El ecosistema Docker: una introducción a los componentes comunes" . www.digitalocean.com . Consultado el 26 de febrero de 2018 .
- ↑ "Acerca del Registro" . Documentación de Docker . Docker, Inc. Consultado el 26 de febrero de 2018 .
- ↑ "Trabajar con notificaciones" . 2 de marzo de 2019.
- ↑ "Referencia de Dockerfile" . Documentación de Docker . 14 de noviembre de 2023. Consultado el 30 de noviembre de 2023 .
- ↑ "Descripción general de Docker Compose" . Documentación de Docker . Docker, Inc. Consultado el 6 de julio de 2017 .
- ↑ "Referencia de la línea de comandos de Compose" . Documentación de Docker . Docker, Inc. Consultado el 28 de febrero de 2018 .
- ↑ "Orquesta contenedores para desarrollo con Docker Compose" . vía @codeship . 27 de mayo de 2015. Consultado el 28 de febrero de 2018 .
- ↑ "Referencia de la versión 3 del archivo Compose" . Documentación de Docker . Docker, Inc. Consultado el 28 de febrero de 2018 .
- ↑ Firshman, Ben (21 de diciembre de 2013). "Versión 0.0.1" . docker/compose . Docker, Inc. – vía GitHub .
- ↑ Prasad, Aanand (16 de octubre de 2014). "Versión 1.0.0" . docker/compose . Docker, Inc. – vía GitHub .
- ↑ "8 herramientas de orquestación de contenedores que debes conocer" . Linux.com . 12 de abril de 2017. Consultado el 6 de julio de 2017 .
- ↑"Docker Swarm". Docker Documentation. Docker, Inc. Retrieved July 6, 2017.
- ↑"Docker swarm". June 4, 2021.
- ↑"Swarm command-line reference". Docker Documentation. Docker, Inc. Retrieved February 28, 2018.
- ↑"docker node". Docker Documentation. Retrieved February 28, 2018.
- ↑"Docker Swarm 101". aquasec.com. Retrieved February 28, 2018.
- ↑"Raft Consensus Algorithm". raft.github.io. Retrieved February 28, 2018.
- ↑"Docker Desktop & Docker Guides". Docker Guide. April 25, 2021. Archived from the original on April 25, 2021. Retrieved April 25, 2021.
- ↑"Get Docker". September 11, 2024.
- ↑"Docker containers: What are the open source licensing considerations?". www.linuxfoundation.org. Retrieved July 3, 2026.
External links
- Moby website
- Moby on GitHub
- 2013 software
- Containerization software
- Free software programmed in Go
- Free virtualization software
- Linux containerization
- Operating system security
- Operating system technology
- Software using the Apache license
- Virtualization software for Linux