Docker (software)

Summary

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.[1]​ Docker aprovecha las funciones de aislamiento de recursos del kernel 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.[2]

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 28.4.0 (info) (3 de septiembre de 2025 (20 días))
Archivos legibles
Dockerfile
Archivos editables
Dockerfile
Enlaces
Sitio web oficial
Repositorio de código
Seguimiento de errores

El soporte del kernel Linux para los espacios de nombres aísla la vista que una aplicación tiene de su entorno operativo,[3]​ 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.[4][5][6]

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 se puede ejecutarse en cualquier servidor Linux. Esto permitir 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 ."[7]

Resumen

editar
 
Docker puede utilizar diferentes interfaces para acceder a las capacidades de virtualizacion del kernel Linux.[6]

Docker implementa una API de alto nivel que proporciona contenedores livianos capaces de ejecutar procesos de forma aislada.[8]

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.[7]​ 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. [6][9]

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. [10][11]

Integración

editar

Docker se puede integrar con diferentes herramientas de infraestructura, como Amazon Web Services,[12]Ansible,[13]​ Cfengine,[14]​ Chef,[15]Google Cloud Platform,[16]DigitalOcean,[17]IBM Bluemix,[18]​ Jelastic,[19]Jenkins,[20]Microsoft Azure,[21]OpenStack Nova,[22]​ OpenSVC,[23]Puppet,[24]​ Salt,[25]​ y Vagrant.[26]

El proyecto Cloud Foundry Diego integra Docker con Cloud Foundry PaaS.[27]

El proyecto GearD tiene como objetivo integrar Docker en el de Red Hat OpenShift Origin PaaS. [28]

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.[29][30]

Historia

editar

Solomon Hykes inició Docker como un proyecto interno de dotCloud,[31]​ una empresa enfocada en ofrecer servicios de plataforma como servicio (PaaS),[32]​ 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.[8]​ 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.[4][9]​ 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.[33]

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.[34]

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:[35]

  • Genera una URL única y de corta duración para descargar payloads durante el ataque.
  • Está diseñado para ejecutar comandos recibidos desde sus operadores.
  • Utiliza la biblioteca TLS para funciones criptograficas.

Colaboración

editar
  • El 23 de julio de 2013, dotCloud Inc., la empresa detrás de Docker, anunció la incorporación de Ben Golub, exdirector ejecutivo de Gluster y Plaxo, como nuevo miembro de la compañía, señalado a Docker como el principal foco estratégico de la organización en adelante.[36]
  • El 22 de enero de 2014, Docker informó que había completado una ronda de capital de riesgo Serie B de US$ 15.000.000, liderada por Greylock Partners.[38]
  • El 23 de julio de 2014, Docker adquirió la Orchard, hacedores de Fig.[39]
  • El 16 de septiembre de 2014, Docker anunció que había completado una ronda de US$ 40 M de la Serie C, liderado por Sequoia Capital.[40]
  • El 15 de octubre de 2014, Microsoft anunció la integración del motor de Docker en Windows Server 2016, así como soporte nativo para el rol de cliente Docker en Windows.[41][42]
  • El 4 de diciembre de 2014, IBM reveló una alianza estratégica con Docker para permite a las empresas generar y ejecutar de manera más eficiente, rápida y rentable generación de aplicaciones en la nube de IBM ("IBM Cloud").[43]
  • Finalmente, el 7 de junio de 2016, HPE (Hewlett Packard Enterprise) anunció una alianza empresarial mundial con Docker que incluía un enfoque conjunto al mercado, venta de soluciones, ingeniería, soporte, servicios e intercambio de conocimientos. El objetivo era ayudar a los clientes a transformar y modernizar sus centros de datos, además de beneficiarse de un entorno de desarrollo más ágil. En el núcleo de esta alianza se encontraba el programa HPE Docker Ready Server, único en la industria de los servidores, que garantiza que los servidores de HPE integrarían Docker de forma nativa y contarían con soporte comercial.[44]

Licencia

editar
  • El motor de Docker está licenciado bajo la Apache License 2.0. Docker Desktop distribuye algunos componentes que se encuentran bajo la Licencia Pública General GNU. Cabe señalar que Docker Desktop no es gratuito para las grandes empresas.[45]
  • Por otro lado, los archivos Dockerfile pueden publicarse bajo una licencia de código abierto. Sin embargo,el alcance de dicha licencia aplica únicamente al Dockerfile en sí, y no la imagen del contenedor generada a partir de este.

Véase también

editar

Referencias

editar
  1. O'Gara, Maureen (26 de julio de 2013). «Ben Golub, Who Sold Gluster to Red Hat, Now Running dotCloud». SYS-CON Media. Archivado desde el original el 13 de septiembre de 2019. Consultado el 9 de agosto de 2013. 
  2. «Docker Documentation: Kernel Requirements». docker.readthedocs.org. 4 de enero de 2014. Archivado desde el original el 21 de agosto de 2014. Consultado el 20 de agosto de 2014. 
  3. Dan Walsh. «Yet Another Reason Containers Don't Contain: Kernel Keyrings». projectatomic.io. Consultado el 13 de abril de 2015. 
  4. a b Steven J. Vaughan-Nichols (11 de junio de 2014). «Docker libcontainer unifies Linux container powers». ZDNet. Consultado el 30 de julio de 2014. 
  5. «libcontainer - reference implementation for containers». github.com. Consultado el 30 de julio de 2014. 
  6. a b c «Docker 0.9: Introducing execution drivers and libcontainer». docker.com. 10 de marzo de 2014. Consultado el 20 de enero de 2015. 
  7. a b Noyes, Katherine (1 de agosto de 2013). «Docker: A 'Shipping Container' for Linux Code». Linux.com. Archivado desde el original el 8 de agosto de 2013. Consultado el 9 de agosto de 2013. 
  8. a b Avram, Abel (27 de marzo de 2013). «Docker: Automated and Consistent Software Deployments». InfoQ. Consultado el 9 de agosto de 2013. 
  9. a b Swan, Chris (13 de marzo de 2014). «Docker drops LXC as default execution environment». InfoQ. Consultado el 20 de enero de 2015. 
  10. Hall, Adron (31 de julio de 2013). «OSCON : Conversations, Deployments, Architecture, Docker and the Future?». CloudAve. Archivado desde el original el 27 de marzo de 2019. Consultado el 9 de agosto de 2013. 
  11. Reeder, Travis (22 de abril de 2014). «How Docker Helped Us Achieve the (Near) Impossible». Iron.io. Archivado desde el original el 8 de agosto de 2014. Consultado el 25 de julio de 2014. 
  12. «Amazon EC2 - Docker Documentation». docs.docker.com. Archivado desde el original el 18 de octubre de 2014. Consultado el 18 de octubre de 2014. 
  13. /. «ansible/library/cloud/docker». GitHub. Archivado desde el original el 27 de diciembre de 2013. Consultado el 20 de enero de 2014. 
  14. «CFEngine». CFEngine. Archivado desde el original el 13 de junio de 2014. Consultado el 6 de junio de 2014. 
  15. «thoward/docker-cookbook». GitHub. Consultado el 20 de enero de 2014. 
  16. «Containers on Google Cloud Platform». Google Inc. 
  17. «Docker Tutorials | DigitalOcean». www.digitalocean.com. Consultado el 12 de julio de 2016. 
  18. «Bluemix Launches IBM Containers Beta Based on Docker». IBM. 4 de diciembre de 2014. Archivado desde el original el 28 de abril de 2015. Consultado el 20 de abril de 2015. 
  19. «Jelastic Announces Docker Integration to Provide the Most Advanced Orchestrated Application Delivery». PRWeb. Consultado el 3 de diciembre de 2014. 
  20. «georgebashi/jenkins-docker-plugin». GitHub. Consultado el 20 de enero de 2014. 
  21. «Here's how Microsoft is supporting the open-source Docker container model». ZDNet. 10 de junio de 2014. Consultado el 16 de octubre de 2014. 
  22. Stefano Maffulli  June 7th, 2013 (7 de junio de 2013). «OpenStack Community Weekly Newsletter (May 31 – June 7) » The OpenStack Blog». Openstack.org. Archivado desde el original el 29 de diciembre de 2013. Consultado el 20 de enero de 2014. 
  23. «OpenSVC Docker». OpenSVC. Archivado desde el original el 31 de mayo de 2014. Consultado el 29 de mayo de 2014. 
  24. Gareth Rushgrove. «garethr/docker». Puppet Forge. Consultado el 20 de enero de 2014. 
  25. «saltstack/dockerio». Archivado desde el original el 3 de febrero de 2014. Consultado el 20 de enero de 2014. 
  26. «philspitler/vagrant-docker». GitHub. Archivado desde el original el 9 de agosto de 2013. Consultado el 20 de enero de 2014. 
  27. Whelan, Phil (3 de septiembre de 2014). «Cloud Foundry: Diego Explained By Onsi Fakhouri» (html). ActiveState (en inglés). Archivado desde el original el 19 de abril de 2015. Consultado el 5 de noviembre de 2018. «Functionality is being added to enable end-users to push Docker images directly into a Cloud Foundry cluster running Diego.» 
  28. Jackson, Joab (16 de abril de 2014). «Red Hat to update Docker container tech for enterprises: Open source vendor plans to incorporate advanced Linux tools such as systemd and SELinux into Docker». Computerworld (Computerworld, Inc.). Consultado el 29 de mayo de 2014. «Red Hat has also started a second community project, called GearD, to integrate Docker into its PaaS (platform-as-a-service) hosting software, OpenShift Origin.» 
  29. Seguridad en los contenedores docker https://blog.elevenpaths.com/2018/06/docker-contenedores-seguros-cib Archivado el 31 de agosto de 2018 en Wayback Machine.
  30. «8 surprising facts about real Docker adoption - Datadog». Datadog (en inglés estadounidense). Consultado el 1 de febrero de 2016. 
  31. Krazit, Tom (28 de marzo de 2018). «Docker founder Solomon Hykes leaving company, cites need for enterprise-focused CTO» (html). Geekwire (en inglés). Archivado desde el original el 18 de febrero de 2019. Consultado el 12 de marzo de 2019. «Hykes, who spent 10 years at Docker (originally known as dotCloud), is in a very interesting place as a 34-year-old major shareholder of the company, which, one way or another, should give him a substantial amount of capital to invest in his next entrepreneurial adventure.» 
  32. «One home for all your apps». dotCloud. Archivado desde el original el 17 de mayo de 2014. Consultado el 8 de mayo de 2014. 
  33. «dotcloud/docker». GitHub. Consultado el 13 de abril de 2015. 
  34. «Look who's helping build Docker -- besides Docker itself». InfoWorld. 27 de mayo de 2015. 
  35. «Doki el nuevo malware de linux fija como objetivo las Apis de los contenedores Docker mal configurados.». 
  36. Darrow, Barb (23 de julio de 2013). «PaaS pioneer dotCloud gets new CEO in industry vet Ben Golub». GigaOM. Archivado desde el original el 3 de mayo de 2014. Consultado el 9 de agosto de 2013. 
  37. «DotCloud Pivots And Wins Big With Docker, The Cloud Service Now Part Of Red Hat OpenShift». TechCrunch. 19 de septiembre de 2013. Consultado el 20 de enero de 2014. 
  38. Jordan Novet (January 21, 2014). «Docker's open-source bet pays off with $15M round». VentureBeat. Consultado el 22 de enero de 2014. 
  39. Ben Kepes (July 23, 2014). «Docker Makes Its Move, Acquires Orchard In A Sign Of Things To Come». Forbes. Consultado el 23 de julio de 2014. 
  40. Jack Clark and Peter Burrows (September 16, 2014). «Docker Said to Be Valued at $400 Million in Funding Round». Bloomberg. Consultado el 16 de septiembre de 2014. 
  41. Mary Jo Foley (15 de octubre de 2014). «Docker container support coming to Microsoft's next Windows Server release». ZDNet. Consultado el 16 de octubre de 2014. 
  42. Scott Guthrie (15 de octubre de 2014). «Docker and Microsoft: Integrating Docker with Windows Server and Microsoft Azure». Microsoft. Consultado el 12 de enero de 2015. 
  43. «IBM and Docker Announce Strategic Partnership to Deliver Enterprise Applications in the Cloud and On Prem». IBM. 4 de diciembre de 2014. Consultado el 20 de abril de 2015. 
  44. «Hewlett Packard Enterprise and Docker Partner to Power Distributed Applications Across Hybrid Infrastructure». HPE. 7 de junio de 2016. Archivado desde el original el 12 de agosto de 2016. Consultado el 11 de agosto de 2016. 
  45. «Get Docker». Docker Documentation (en inglés). 28 de mayo de 2025. Consultado el 17 de julio de 2025. 

Enlaces externos

editar
  • Sitio web oficial
  • Repositorio oficial en GitHub
  • "Linux Containers y la nube del futuro" por Rami Rosen
  • Multi-tenencia utilizando Docker
  •   Datos: Q15206305
  •   Multimedia: Docker (virtualization software) / Q15206305
  •   MediaWiki: Docker