Docker es un conjunto de productos de plataforma como servicio (PaaS) que utilizan la virtualización a nivel de sistema operativo para entregar software en paquetes llamados contenedores. [5] 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. [6] Debido a que todos los contenedores comparten los servicios de un solo núcleo de sistema operativo , utilizan menos recursos que las máquinas virtuales . [7]
Autor (es) original (es) | Solomon Hykes |
---|---|
Desarrollador (es) | Docker, Inc. |
Versión inicial | 20 de marzo de 2013 [1] |
Lanzamiento estable | 20.10.6 / 12 de abril de 2021 [2] |
Repositorio | |
Escrito en | Ir [3] |
Sistema operativo | Linux , Windows , macOS |
Plataforma | x86-64 , ARM , s390x , ppc64le |
Tipo | Virtualización a nivel de sistema operativo |
Licencia | Propietario (Enterprise Edition), [4] Apache License 2.0 (Community Edition) |
Sitio web | docker.com |
El servicio tiene niveles gratuitos y premium. El software que aloja los contenedores se llama Docker Engine . [7] Se inició por primera vez en 2013 y es desarrollado por Docker, Inc. [8]
Operación
Docker puede empaquetar una aplicación y sus dependencias en un contenedor virtual que se puede ejecutar en cualquier computadora con Linux, Windows o macOS. Esto permite que la aplicación se ejecute en una variedad de ubicaciones, como en las instalaciones , en una nube pública y / o en una nube privada . [10] Cuando se ejecuta en Linux, Docker usa 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 ) [11] para permitir que los contenedores se ejecuten dentro de un solo Linux ejemplo, evitando la sobrecarga de iniciar y mantener máquinas virtuales . [12] Docker en macOS usa una máquina virtual Linux para ejecutar los contenedores. [13]
Debido a que los contenedores Docker son livianos, un solo servidor o máquina virtual puede ejecutar varios contenedores simultáneamente. [14] 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. [15]
El soporte del kernel de Linux para espacios de nombres principalmente [16] aísla la vista de una aplicación del entorno operativo, incluidos árboles de procesos, red, ID de usuario y sistemas de archivos montados, mientras que los cgroups del kernel proporcionan limitación de recursos para la memoria y la CPU. [17] Desde la versión 0.9, Docker incluye su propio componente (llamado " libcontainer ") para usar directamente las instalaciones de virtualización proporcionadas por el kernel de Linux, además de usar interfaces de virtualización abstractas a través de libvirt , LXC y systemd-nspawn . [18] [9] [10] [19]
Docker implementa una API de alto nivel para proporcionar contenedores livianos que ejecutan procesos de forma aislada. [20]
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 contenedores de Docker y maneja objetos de contenedor. El demonio escucha las solicitudes enviadas a través de la API de Docker Engine. [21] [22] El programa cliente de Docker, denominadodocker
, proporciona una interfaz de línea de comandos , CLI, que permite a los usuarios interactuar con los demonios de Docker. [21] [23] - Objetos: los objetos de Docker son varias entidades que se utilizan para ensamblar una aplicación en Docker. Las principales clases de objetos de Docker son imágenes, contenedores y servicios. [21]
- Un contenedor Docker es un entorno encapsulado y estandarizado que ejecuta aplicaciones. [24] Un contenedor se administra mediante la API de Docker o CLI . [21]
- Una imagen de Docker es una plantilla de solo lectura que se utiliza para crear contenedores. Las imágenes se utilizan para almacenar y enviar aplicaciones. [21]
- Un servicio de Docker permite escalar contenedores en varios demonios de Docker. El resultado se conoce como enjambre , un conjunto de demonios que cooperan y que se comunican a través de la API de Docker. [21]
- Registros: un registro de Docker es un repositorio de imágenes de Docker. Los clientes de Docker se conectan a los registros para descargar ("extraer") imágenes para su uso o cargar ("enviar") imágenes que han creado. Los registros pueden ser públicos o privados. Dos registros públicos principales son Docker Hub y Docker Cloud. Docker Hub es el registro predeterminado donde Docker busca imágenes. [21] [25] Los registros de Docker también permiten la creación de notificaciones basadas en eventos. [26]
Herramientas
- Docker Compose es una herramienta para definir y ejecutar aplicaciones Docker de varios contenedores. [27] Utiliza archivos YAML para configurar los servicios de la aplicación y realiza el proceso de creación y puesta en marcha de todos los contenedores con un solo comando. La
docker-compose
utilidad CLI permite a los usuarios ejecutar comandos en varios contenedores a la vez, por ejemplo, crear imágenes, escalar contenedores, ejecutar contenedores que se detuvieron y más. [28] 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 contenedor. [29] El archivo docker-compose.yml se usa para definir los servicios de una aplicación e incluye varias opciones de configuración. Por ejemplo, labuild
opción define opciones de configuración como la ruta de Dockerfile, lacommand
opción permite anular los comandos de Docker predeterminados y más. [30] La primera versión beta pública de Docker Compose (versión 0.0.1) fue lanzada el 21 de diciembre de 2013. [31] La primera versión lista para producción (1.0) estuvo disponible el 16 de octubre de 2014. [32] - Docker Swarm proporciona una funcionalidad de agrupación en clústeres nativa para contenedores Docker, que convierte un grupo de motores Docker en un único motor Docker virtual. [33] En Docker 1.12 y versiones posteriores, el modo Swarm está integrado con Docker Engine. [34] La utilidad
docker swarm
CLI [35] permite a los usuarios ejecutar contenedores Swarm, crear tokens de descubrimiento, enumerar nodos en el clúster y más. [36] Ladocker node
utilidad CLI permite a los usuarios ejecutar varios comandos para administrar nodos en un enjambre, por ejemplo, enumerar los nodos en un enjambre, actualizar nodos y eliminar nodos del enjambre. [37] Docker gestiona enjambres utilizando el algoritmo de consenso Raft . Según Raft, para que se realice una actualización, la mayoría de los nodos de Swarm deben estar de acuerdo con la actualización. [38] [39] - Volumen de Docker Si copia o crea un archivo en un contenedor cuando detiene ese contenedor, ese archivo o los demás archivos que creamos o copiamos se eliminarán. La solución para esto está usando
Docker Volume
. [40]
Historia
Docker Inc. fue fundada por Kamel Founadi, Solomon Hykes y Sebastien Pahl [41] durante el grupo de incubadoras de startups Y Combinator Summer 2010 y se lanzó en 2011. [42] La startup también fue una de las 12 startups en la primera cohorte de Founder's Den . [43] Hykes inició el proyecto Docker en Francia como un proyecto interno dentro de dotCloud , una empresa de plataforma como servicio . [44]
Docker debutó al público en Santa Clara en PyCon en 2013. [45] Fue lanzado como código abierto en marzo de 2013. [20] 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ó a LXC con su propio componente, libcontainer , que estaba escrito en el lenguaje de programación Go . [18] [46]
En 2017, Docker creó el proyecto Moby para investigación y desarrollo abiertos. [47]
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 . [48]
- 15 de octubre de 2014: Microsoft anunció la integración del motor Docker en Windows Server , así como el soporte nativo para el rol de cliente Docker en Windows. [49] [50]
- Noviembre de 2014: se anunciaron los servicios de contenedor de Docker para Amazon Elastic Compute Cloud (EC2). [51]
- 10 de noviembre de 2014: Docker anunció una asociación con Stratoscale . [52]
- 4 de diciembre de 2014: IBM anunció una asociación estratégica con Docker que permite a Docker integrarse más estrechamente con IBM Cloud. [53]
- 22 de junio de 2015: Docker y varias otras empresas anunciaron que están trabajando en un nuevo estándar independiente del proveedor y del sistema operativo para contenedores de software. [54] [55]
- Abril de 2016: Windocks, un ISV independiente lanzó un puerto del proyecto de código abierto de Docker a Windows, compatible con Windows Server 2012 R2 y Server 2016, con todas las ediciones de SQL Server 2008 en adelante. [56]
- Mayo de 2016: el análisis mostró las siguientes organizaciones como principales contribuyentes a Docker: el equipo de Docker, Cisco , Google , Huawei , IBM , Microsoft y Red Hat . [57]
- 8 de junio de 2016: Microsoft anunció que Docker ahora podría usarse de forma nativa en Windows 10 . [58]
- Enero de 2017: un análisis de las menciones de perfil de LinkedIn mostró que la presencia de Docker creció un 160% en 2016. [59]
- 6 de mayo de 2019: Microsoft anunció la segunda versión del Subsistema de Windows para Linux (WSL). Docker, Inc. anunció que ha comenzado a trabajar en una versión de Docker para Windows que se ejecuta en WSL 2. [60] En particular, esto significa que Docker puede ejecutarse en Windows 10 Home (anteriormente estaba limitado a Windows Pro y Enterprise ya que utilizó Hyper-V).
- Agosto de 2020: Microsoft anunció el backport de WSL2 a las versiones 1903 y 1909 de Windows 10 (anteriormente WSL2 solo estaba disponible en la versión 2004) [61] y los desarrolladores de Docker anunciaron la disponibilidad de Docker para estas plataformas. [62]
Ver también
- DevOps
- Cadena de herramientas de DevOps
- Microservicios
- Virtualización a nivel de sistema operativo
- Arquitectura de componentes de servicio
- gVisor
- Lista de contenedores de Linux
- Kubernetes
Referencias
- ^ Barbier, Julien (9 de junio de 2014). "Está aquí: Docker 1.0" . Docker . Estibador, Inc . Consultado el 30 de septiembre de 2019 .
- ^ "Notas de la versión de Docker Engine" . docker.com . Estibador, Inc . Consultado el 20 de abril de 2021 .
- ^ "Código fuente de Docker" . Docker / repositorio de distribución . Docker, Inc. 12 de octubre de 2015 . Consultado el 24 de octubre de 2015 , a través de GitHub .
- ^ Friis, Michael (2 de marzo de 2017). "Anuncio de Docker Enterprise Edition" . Blog de Docker . Estibador, Inc . Consultado el 2 de marzo de 2017 .
- ^ O'Gara, Maureen (26 de julio de 2013). "Ben Golub, que vendió Gluster a Red Hat, ahora ejecuta dotCloud" . Medios SYS-CON. Archivado desde el original el 13 de septiembre de 2019.
- ^ "Docker preguntas más frecuentes (FAQ)" . 2 de marzo de 2019.
- ^ a b "¿Qué es un contenedor?" . docker.com . Docker, Inc. Consultado el 13 de mayo de 2019 .
- ^ Ratan, Vivek (8 de febrero de 2017). "Docker: un favorito en el mundo de DevOps" . Open Source For U . Consultado el 14 de junio de 2017 .
- ^ a b "Docker 0.9: Introducción de controladores de ejecución y libcontainer" . Blog de Docker . Docker, Inc. 10 de marzo de 2014 . Consultado el 20 de enero de 2015 .
- ^ a b Noyes, Katherine (1 de agosto de 2013). "Docker: un 'contenedor de envío' para el código de Linux" . Linux.com . Archivado desde el original el 8 de agosto de 2013 . Consultado el 9 de agosto de 2013 .
- ^ "Seleccione la documentación de un controlador de almacenamiento" . Documentación de Docker . Archivado desde el original el 6 de diciembre de 2016 . Consultado el 7 de diciembre de 2016 .
- ^ "Documentación de Docker: requisitos del kernel" . 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 .
- ^ "Empiece a utilizar Docker para Mac" . docker.com . Estibador, Inc . Consultado el 27 de septiembre de 2018 .
- ^ K., Chris (14 de enero de 2019). "Contenedores ligeros de Windows: uso de aislamiento de procesos de Docker en Windows 10" . Poweruser . Consultado el 2 de agosto de 2019 .
contenedores reales más "ligeros" (a través del denominado aislamiento de procesos), donde los procesos en contenedores se ejecutan directamente en el sistema host; todos los procesos en el host y en los contenedores comparten el mismo kernel de Windows. Esto es similar a cómo funcionan los contenedores en Linux.
- ^ "8 hechos sorprendentes sobre la adopción real de Docker" . Datadog . Junio de 2018 . Consultado el 4 de septiembre de 2019 .
- ^ Walsh, Dan (15 de septiembre de 2014). "Otra razón más que los contenedores no contienen: llaveros del núcleo" . projectatomic.io . Consultado el 13 de abril de 2015 .
- ^ "Limita los recursos de un contenedor" . Documentación de Docker . Consultado el 7 de marzo de 2018 .
- ^ a b Vaughan-Nichols, Steven J. (11 de junio de 2014). "Docker libcontainer unifica los poderes del contenedor de Linux" . ZDNet . Consultado el 30 de julio de 2014 .
- ^ "libcontainer - implementación de referencia para contenedores" . repositorio de docker / libcontainer . Estibador, Inc . Consultado el 30 de julio de 2014 , a través de GitHub ].
- ^ a b Avram, Abel (27 de marzo de 2013). "Docker: implementaciones de software automatizadas y consistentes" . InfoQ . Consultado el 9 de agosto de 2013 .
- ^ a b c d e f g "Descripción general de Docker" . Documentación de Docker . Estibador, Inc . Consultado el 26 de febrero de 2018 .
- ^ "dockerd" . Documentación de Docker . Estibador, Inc . Consultado el 26 de febrero de 2018 .
- ^ "Utilice la línea de comandos de Docker" . Documentación de Docker . Estibador, Inc . Consultado el 26 de febrero de 2018 .
- ^ "El ecosistema de 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 . Estibador, Inc . Consultado el 26 de febrero de 2018 .
- ^ "Trabajar con notificaciones" . 2 de marzo de 2019.
- ^ "Descripción general de Docker Compose" . Documentación de Docker . Estibador, Inc . Consultado el 6 de julio de 2017 .
- ^ "Redactar referencia de línea de comandos" . Documentación de Docker . Estibador, Inc . Consultado el 28 de febrero de 2018 .
- ^ "Orquestar contenedores para el desarrollo con Docker Compose" . a través de @codeship . 27 de mayo de 2015 . Consultado el 28 de febrero de 2018 .
- ^ "Redactar archivo de referencia de la versión 3" . Documentación de Docker . Estibador, Inc . Consultado el 28 de febrero de 2018 .
- ^ Firshman, Ben (21 de diciembre de 2013). "Liberar 0.0.1" . docker / compose . Docker, Inc. - a través de GitHub .
- ^ Prasad, Aanand (16 de octubre de 2014). "Versión 1.0.0" . docker / compose . Docker, Inc. - a través de GitHub .
- ^ "8 herramientas de orquestación de contenedores para conocer" . Linux.com . 12 de abril de 2017 . Consultado el 6 de julio de 2017 .
- ^ "Enjambre de Docker" . Documentación de Docker . Estibador, Inc . Consultado el 6 de julio de 2017 .
- ^ https://docs.docker.com/engine/reference/commandline/swarm/
- ^ "Referencia de línea de comandos de Swarm" . Documentación de Docker . Estibador, Inc . Consultado el 28 de febrero de 2018 .
- ^ "nodo acoplable" . Documentación de Docker . Consultado el 28 de febrero de 2018 .
- ^ "Docker Swarm 101" . aquasec.com . Consultado el 28 de febrero de 2018 .
- ^ "Algoritmo de consenso de balsa" . raft.github.io . Consultado el 28 de febrero de 2018 .
- ^ "Docker Desktop y Docker Guides" . Guía de Docker . 25 de abril de 2021 . Consultado el 25 de abril de 2021 .
- ^ Hykes, Solomon (28 de marzo de 2018). "Au Revoir" . docker.com . Archivado desde el original el 12 de enero de 2021 . Consultado el 23 de enero de 2021 .
- ^ "Acerca de la plataforma dotCloud" . dotCloud . Archivado desde el original el 2 de julio de 2014 . Consultado el 23 de junio de 2019 .
- ^ Seigler, MG (10 de enero de 2011). "Founders Den: Se abre una casa club privada para empresarios en San Francisco" . TechCrunch . Archivado desde el original el 29 de marzo de 2016 . Consultado el 2 de febrero de 2021 .
- ^ "Un hogar para todas tus aplicaciones" . dotcloud.com . Archivado desde el original el 17 de mayo de 2014 . Consultado el 8 de mayo de 2014 .
- ^ "El futuro de los contenedores de Linux" . Canal DotCloud . Consultado el 13 de julio de 2018 , a través de YouTube .
- ^ Swan, Chris (13 de marzo de 2014). "Docker descarta LXC como entorno de ejecución predeterminado" . InfoQ . Consultado el 20 de enero de 2015 .
- ^ https://collabnix.com/demystifying-the-relationship-between-moby-docker/
- ^ "DotCloud gira y gana en grande con Docker, el servicio en la nube 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). "El soporte de 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 servicios web de Amazon . Consultado el 29 de abril de 2017 .
- ^ Rath, John (10 de noviembre de 2014). "Stratoscale recauda $ 32 millones para construir nubes OpenStack compatibles con Docker en servidores de productos básicos" . Consultado el 3 de enero de 2016 .
- ^ "IBM y Docker anuncian una asociación estratégica para ofrecer aplicaciones empresariales en la nube y en las instalaciones" . IBM . 4 de diciembre de 2014 . 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 de contenedor común" . TechCrunch . Consultado el 8 de agosto de 2015 .
- ^ Siluk, Shirley (22 de junio de 2015). "Docker, Tech Giants Team en Open Container Project" . cio-today.com . Consultado el 8 de agosto de 2015 .
- ^ Yegulalp, Serdar (4 de abril de 2016). "Windocks hace lo que Docker y Microsoft no pueden hacer" . InfoWorld . Consultado el 27 de octubre de 2018 .
- ^ "Docker - Estadísticas actualizadas del proyecto" . GitHub Gist . Consultado el 22 de agosto de 2016 .
- ^ Sarkar, Dona (8 de junio de 2016). "Anuncio de Windows 10 Insider Preview Build 14361" . Blogs de Windows . Microsoft . Consultado el 19 de junio de 2016 .
- ^ Mullany, Michael. "Análisis del impulso de Docker 2016" . LinkedIn Pulse . Consultado el 5 de enero de 2017 .
- ^ Vaughan-Nichols, Steven (18 de junio de 2019). "Docker adopta el subsistema de Windows para Linux 2" . ZDNet . CBS Interactive .
- ^ "La compatibilidad con WSL 2 llegará a las versiones 1903 y 1909 de Windows 10" . Línea de comandos de Windows . 20 de agosto de 2020 . Consultado el 21 de agosto de 2020 .
- ^ "Docker Desktop y WSL 2 - Actualización de Backport" . Blog de Docker . 20 de agosto de 2020 . Consultado el 21 de agosto de 2020 .
enlaces externos
- Página web oficial
- Terminología de contenedores - Terminología práctica