Share to: share facebook share twitter share wa share telegram print page

Docker (software)

Docker (software)


Instancia desoftware libre e de código aberto, motor de virtualización, formato de contedor dixital e software libre Editar o valor en Wikidata
Licenzalicenza de propiedade e ASL 2.0 Editar o valor en Wikidata
Características
Sistema operativoLinux, Microsoft Windows, macOS e Unix-like Editar o valor en Wikidata
Plataformax86-64, ARM architecture e IBM S/390 Editar o valor en Wikidata
Linguaxe de programaciónGo Editar o valor en Wikidata
Datas e localizacións
Publicación13 de marzo de 2013 Editar o valor en Wikidata
Anuncio15 de marzo de 2013 Editar o valor en Wikidata
Creación14 de marzo de 2013 Editar o valor en Wikidata
Persoas e organizacións
DesenvolvedorDocker, Inc. Editar o valor en Wikidata
Creador/aSolomon Hykes Editar o valor en Wikidata
Fontes e ligazóns
Páxina WEBdocker.com Editar o valor en Wikidata
RedesFacebook: docker.run Twitter: Docker Youtube: UC76AVf2JkrwjxNKMuPpscHQ GitHub: docker Editar o valor en Wikidata
Repositoriogithub.com… Editar o valor en Wikidata
Wikidata ] C:Commons ]

Docker é un conxunto de produtos de plataforma como servizo (PaaS) que empregan a virtualización a nivel de sistema operativo para entregar software en paquetes denominados contedores.[1] O servizo ten tanto versión gratuíta como de pago. O software que aloxa os contedores chámase Docker Engine.[2] Foi lanzado en 2013 e é desenvolvido por Docker, Inc.[3]

Docker é unha ferramenta usada para automatizar o despregamento de aplicacións en contedores lixeiros, de modo que as aplicacións poidan traballar de xeito eficaz en distintos ambientes illados.

Antecedentes

Os contedores están illados entre eles e inclúen o seu propio software, bibliotecas e ficheiros de configuración. Poden comunicarse entre eles mediante canles ben definidas. Como todos os contedores comparten os servizos dun único kernel, utilizan menos recursos que as máquinas virtuais.

Operación

Docker pode utilizar diferentes interfaces para acceder a características de virtualization do kernel de Linux.

Docker pode empaquetar unha aplicación e as súas dependencias nun contedor virtual que pode correr en calquera computador Linux, Windows, ou macOS. Isto permite que a aplicación poida executarse en distintas localizacións: coma software local (en inglés: on-premises software), en público (ver computación descentralizada, computación distribuída, e computación na nube) ou nunha nube privada.[4] Cando corre en Linux, Docker emprega as características do illamento de recursos do kernel de Linux (como os cgroups e os kernel namespaces) e un sistema de ficheiros con capacidade de unión sistema de ficheiros con capacidade de unión (como OverlayFS)[5] para permitir que os contedores corran cunha soa instancia de Linux, evitando a sobrecarga de iniciar e manter as máquinas virtuais. En macOS Docker utiliza unnha máquina virtual de Linux para executar os contedores.

Como os contedores de Docker son lixeiros, un só servidor ou máquina virtual pode correr varios contedores simultaneamente.[6] Unha análise de 2018 descubriu que un caso de uso típico de Docker implica executar oito contedores por host, e que unha cuarta parte das organizacións analizadas executan 18 ou máis por host.[7] Tamén pode ser instalado nunha computadora monoplaca como a Raspberry Pi.[8]

A compatibilidade do kernel de Linux con espazos de nomes illa principalmente[9] a vista dunha aplicación do ambiente operativo, incluíndo árbores de procesos, redes, IDs de usuario e sistemas de ficheiros montados, mentres que os grupos de control do kernel limitan os recursos para a memoria e a CPU.[10] Dende a versión 0.9, Docker inclúe o seu propio compoñente (chamado libcontainer) para utilizar facilidades de virtualización proporcionadas directamente polo kernel de Linux, ademais de usar interfaces abstractas de virtualización vía libvirt, LXC e systemd-nspawn.[11][12]

Docker implementa unha API de alto nivel para proporcionar contedores lixeiros que corren procesos en illamento.[13]

Modelo de licenzas

  • O motor de Docker está baixo a licenza Apache 2.0. Docker Desktop distribúe algúns compoñentes baixo a Licenza Pública Xeral GNU. Docker Desktop non é de balde para empresas grandes.[14]
  • Os ficheiros Dockerfile poden estar baixo unha licenza libre (open-source). O alcance da licenza só afecta ao Dockerfile e non á imaxe do colector.

Compoñentes

O que ofrece o software como servizo de Docker consiste en tres compoñentes:

  • Software: o demo ou daemon de Docker, chamado dockerd, é un proceso persistente que administra os contedores de Docker e xestiona os obxectos dos contedores. O daemon escoita peticións enviadas a través da API do Docker Engine.[15][16] O programa de cliente de Docker, chamado docker, proporciona unha interface de liña de comandos (CLI) que permite aos usuarios interactuar cos daemons de Docker.[17]
  • Obxectos: os obxectos de Docker son varias entidades empregadas para ensamblar unha aplicación en Docker. As clases principais de obxectos de Docker son imaxes, contedores, e servizos.
    • Un contedor Docker é un ambiente encapsulado estandarizado que corre aplicacións.[18] Un contedor é xestionado utilizando a API de Docker ou o CLI.
    • Unha imaxe de Docker é un modelo de solo lectura empregado para construír contedores. As imaxes úsanse para almacenar e enviar aplicaciones.
    • Un servizo de Docker permite escalar contedores entre múltiples daemons de Docker. O resultado é coñecido como swarm (enxame), un conxunto de daemons cooperativos que comunícanse a través da API de Docker.
  • Rexistros: un rexistro de Docker é un repositorio para imaces de Docker. Os clientes de Docker conéctanse aos rexistros para descargar ("pull") imaces que construíron. Os rexistros poden ser públicos ou privados. O principal rexistro público é o Docker Hub. Docker Hub é o rexistro principal onde Docker busca imaxes. Os rexistros de Docker tamén permiten a creación de notificacións baseadas en eventos.

Dockerfile (Exemplo)

Un Dockerfile é un ficheiro de texto que xeralmente especifica varios aspectos dun contedor de Docker: a distribución de Linux, comandos de instalación para a contorna de execución da linguaxe de programación e o código fonte da aplicación.

Un exemplo dun Dockerfile:[19]

ARG CODE_VERSION=latest
FROM ubuntu:${CODE_VERSION}
COPY ./examplefile.txt /examplefile.txt
ENV MY_ENV_VARIABLE="example_value"
RUN apt-get update

# Mount a directory from the Docker volume
# Note: This is usually specified in the 'docker run' command.
VOLUME ["/myvolume"]

# Expose a port (22 for SSH)
EXPOSE 22

Ferramentas

  • Docker Compose é unha ferramenta para definir e correr aplicacións con múltiples contedores Docker.[20] Emprega ficheiros YAML para configurar os servizos da aplicación e executa o proceso de creación e inicio de todos os contedores cun só comando. O CLI de Docker Compose permite aos usuarios executar comandos en distintos contedores dunha vez; por exemplo, construíndo imaxes, escalando contedores, correndo contedores que foron parados, e máis.[21] As ordes relacionadas coa manipulación dunha imaxe, ou opcións interactivas co usuario, non son relevantes en Docker Compose xa que só se dirixen a un contedor. O ficheiro docker-compose.yml emprégase para definir os servizos dunha aplicación e inclúe varias opcións de configuración. Por exemplo, a opción de build define opcións de configuración como o path do Dockerfile, a opción de command permite sobreescribir un comando de Docker por defecto, e máis.[22] A primeira versión beta pública Docker Compose (versión 0.0.1) lanzouse o 21 de decembro de 2013.[23] A primeira versión lista para produción (1.0) fíxose dispoñible o 16 de outubro de 2014.[24]
  • Docker Swarm proporciona unha funcionalidade de agrupamento en clústeres nativa para conteñedores Docker, o que converte un grupo de motores Docker nun só motor virtual Docker.[25] En Docker 1.12 e superior, o modo Swarm está integrado co Docker Engine.[26] A utilidade do CLI[27] do docker swarm permite aos usuarios correr contedores Swarm, crear tokens de descubrimento, listar nodos no clúster, e máis.[28] A utilidade do CLI do docker node permite aos usuarios executar varios comandos para administrar nodos dun enxame, por exemplo, listar os nodos dun enxame, actualizar nodos ou eliminar nodos do enxame.[29] Docker xestiona os enxames utilizando o algoritmo de consenso Raft. Segundo Raft, para realizar unha actualización, a maioría dos nodos do enxame deben de estar de acordo.[30][31] Ademais do CLI do docker swarm, o docker stack é unha ferramenta deseñada para administrar os servizos Swarm con maior flexibilidade. Pode utilizar un arquivo de configuración moi similar a un docker-compose.yml, con algúns matices. Usar docker stack en vez de docker compose ofrece varias vantaxes, como a habilidade de manexar clúster Swarm a través de múltiples máquinas, ou a capacidade de traballar con docker secret combinado con docker context, unha característica que permite executar comandos de Docker nun host remoto, habilitando a administración dun contedor remoto.
  • Docker Volume facilita a persistencia independente dos datos, permitindo manter os datos incluso tras a eliminación ou recreación do contedor.[32]

Historia

dotCloud O inc. foi fundada por Kamel Founadi, Solomon Hykes, e Sebastien Pahl[33] durante o grupo de incubación de startups do verán de 2010 Y Combinator e lanzada en 2011, e rebautizado a Docker Inc en 2013.[34] Hykes comezou co proxecto Docker en Francia como un proxecto interno dentro de dotCloud, unha compañía de plataforma-como-servizo.[35]

Docker saíu ao público en Santa Clara na PyCon no 2013. Foi lanzado como código aberto en marzo de 2013.[36] Nese momento, usaba LXC como o seu ambiente de execución predeterminado. Un ano máis tarde, coa liberación de versión 0.9, Docker substituíu LXC co seu compoñente propio, libcontainer, o cal foi escrito na linguaxe de programación Go.[37]

En 2017, Docker creou o proxecto Moby pola investigación e o desenvolvemento aberto.[38]

Adopción

  • 19 de setembro de 2013: Red Hat e Docker anunciaron unha colaboración ao redor de Fedora, Red Har Enterprise Linux (RHEL), e OpenShift.[39]
  • 15 de outubro de 2014: Microsoft anunciou a integración do motor de Docker no Windows Server, así como soporte nativo para a función de cliente de Docker en Windows.[40][41]
  • Novembro de 2014: os servizos dos contedores Docker foron anunciados para o Amazon Elastic Compute Cloud (EC2).[42]
  • 10 de novembro de 2014: Docker anunciou unha asociación con Stratoscale.[43]
  • 4 de decembro de 2014: IBM anunciou unha asociación estratéxica con Docker que habilitaba a Docker a integrarse máis estreitamente coa nube de IBM.[44]
  • 22 de xuño de 2015: Docker e moitos outras empresas anunciaron que estaban a traballar nun novo estándar para contedores de software independente do provedor e do sistema operativo.[45][46]
  • Decembro de 2015: Oracle Cloud engadiu soporte para os contedores Docker tras adquirir StackEngine, unha startup de contedores Docker.[47]
  • Abril de 2016: Windocks, un provedor de software independente, lanzou unnha versión do proxecto de código libre de Docker a Windows, compatible con Windows Server 2012 R2 e Server 2016, con todas as edicións de SQL Server 2008 en diante.
  • Maio de 2016: análises mostraron as seguintes organizacións como as principais contribuíntes a Docker: o equipo Docker, Cisco, Google, Huawei, IBM, Microsoft, e Red Hat.[48]
  • 8 de xuño de 2016: Microsoft anunciou que Docker agora podería ser utilizado de forma nativa en Windows 10.[49]
  • Xaneiro de 2017: unha análise de mencións de perfís en LinkedIn mostrou que a presenza de Docker creceu un 160% en 2016.[50]
  • 6 de maio de 2019: Microsoft anunciou a segunda versión de Windows Subsystem for Linux (WSL). Docker, Inc. anunciou que tiñan empezado a traballar nunha versión de Docker para Windows para correr en WSL 2.[51] En particular, isto significaba que Docker podería correr en Windows 10 Home (anteriormente foi limitado a Windows Pro e Enterprise xa que usaba Hyper-V).
  • Agosto de 2020: Microsoft anunciou unha retrocompatibilidade de WSL2 ás versións 1903 e 1909 de Windows 10 (anteriormente, WSL2 só estaba dispoñible na versión 2004)[52] e os desenvolvedores de Docker anunciaron a dispoñibilidade de Docker para estas plataformas.[53]
  • Agosto de 2021: Docker Desktop para Windows e MacOS deixaron de estar dispoñibles de balde para usuarios empresariais. Docker puxo fin ao uso gratuíto de Docker Desktop para os clientes empresariais máis grandes e substituíu o seu Plan Gratuíto por un Plan Persoal. Docker Engine en distribucións de Linux non se viu afectado.[54]
  • Decembro de 2023: Docker adquiriu AtomicJar para expandir as súas capacidades de testing.[55]

Notas

  1. "Ben Golub, Who Sold Gluster to Red Hat, Now Running dotCloud". SYS-CON Media. Consultado o 13 de septembro de 2019. 
  2. "What is a Container? - Docker". Docker (en inglés). Consultado o 13 de maio de 2019. 
  3. "Docker: A Favourite in the DevOps World - open source for you". Open Source For U (en inglés). 2017-02-08. Consultado o 14 de xuño de 2017. 
  4. Noyes, Katherine. "Docker: A 'Shipping Container' for Linux Code". Linux.com (en inglés). Consultado o 9 de agosto de 2013. 
  5. "Select a storage driver - Docker". archive.ph. 2016-12-06. Consultado o 7 de decembro de 2016. 
  6. Chris (2021-01-07). "Lightweight Windows containers". Medium (en inglés). Consultado o 2 de agosto de 2019. 
  7. Datadog (2018-06-13). "8 surprising facts about real Docker adoption". Datadog (en inglés). Consultado o 4 de septembro de 2019. 
  8. "Copia arquivada". Gizmoxo (en inglés). Arquivado dende o orixinal o 16 de xullo de 2023. Consultado o 20 de agosto de 2025. 
  9. Walsh, Dan (2014-09-15). "Yet Another Reason Containers Don't Contain: Kernel Keyrings". www.projectatomic.io (en inglés). Consultado o 13 de abril do 2015. 
  10. "Resource constraints". Docker Documentation (en inglés). 2025-05-06. Consultado o 7 de marzo de 2018. 
  11. "Docker libcontainer unifies Linux container powers". ZDNET (en inglés). Consultado o 30 de xullo de 2014. 
  12. docker-archive. "libcontainer – reference implementation for containers". GitHub (en inglés). Consultado o 30 de xullo de 2014. 
  13. "Docker: Automated and Consistent Software Deployments". InfoQ (en inglés). Consultado o 9 de agosto de 2013. 
  14. "Get Docker". 
  15. "What is Docker?". Docker Documentation (en inglés). 2024-09-10. Consultado o 26 de febreiro de 2018. 
  16. "dockerd". Docker Documentation (en inglés). 2025-07-11. Consultado o 26 de febreiro de 2018. 
  17. "docker". Docker Documentation (en inglés). 2024-08-14. Consultado o 26 de febreiro do 2018. 
  18. "The Docker Ecosystem: An Introduction to Common Components". www.digitalocean.com (en inglés). Consultado o 26 de febreiro do 2018. 
  19. "Dockerfile reference". Docker Documentation (en inglés). 
  20. "Docker Compose". Docker Documentation (en inglés). 2025-07-01. Consultado o 6 de xullo de 2017. 
  21. "docker compose". Docker Documentation (en inglés). 2024-08-22. Consultado o 28 de febreiro de 2018. 
  22. "Compose file reference". Docker Documentation (en inglés). 2025-07-09. Consultado o 28 de febreiro de 2018. 
  23. docker. "Release 0.0.1 · docker/compose". GitHub (en inglés). 
  24. docker. "Release 1.0.0 · docker/compose". GitHub (en inglés). 
  25. Ankerholz, Amber (2016-04-12). "8 Container Orchestration Tools to Know". Linux.com (en inglés). Consultado o 6 de xullo de 2017. 
  26. "Swarm mode". Docker Documentation (en inglés). 2025-01-29. Consultado o 6 de xullo de 2017. 
  27. "docker swarm". Docker Documentation (en inglés). 2024-02-09. 
  28. "Swarm mode". Docker Documentation (en inglés). 2025-01-29. Consultado o 28 de febreiro de 2018. 
  29. "docker node". Docker Documentation (en inglés). 2024-02-09. Consultado o 28 de febreiro de 2018. 
  30. "Docker Swarm". Aqua (en inglés). 2020-12-16. Consultado o 28 de febreiro de 2018. 
  31. "Raft Consensus Algorithm". raft.github.io (en inglés). Consultado o 28 de febreiro de 2018. 
  32. "Docker Guide". dockerguide.com. Consultado o 25 de abril de 2021. 
  33. "Au revoir - Docker Blog". archive.ph. 2021-01-12. Consultado o 23 de xaneiro de 2021. 
  34. "dotCloud - About". www.dotcloud.com (en inglés). Consultado o 23 de xuño de 2019. 
  35. "dotCloud - One home for all your apps". www.dotcloud.com (en inglés). Consultado o 8 de maio de 2014. 
  36. dotcloudtv (2013-03-21). "The future of Linux Containers". YouTube. Consultado o 13 de xullo de 2018. 
  37. "Docker drops LXC as default execution environment". InfoQ (en inglés). Consultado o 20 de xaneiro de 2015. 
  38. "Demystifying the Relationship Between Moby & Docker - Collabnix" (en inglés). 
  39. "DotCloud Pivots And Wins Big With Docker, The Cloud Service Now Part Of Red Hat OpenShift". TechCrunch (en inglés). 2013-09-19. Consultado o 20 de xaneiro de 2014. 
  40. "Docker container support coming to Microsoft's next Windows Server release". ZDNET (en inglés). Consultado o 16 de outubro de 2014. 
  41. "Docker and Microsoft: Integrating Docker with Windows Server and Microsoft Azure". weblogs.asp.net (en inglés). 2014-10-15. Consultado o 12 de xaneiro de 2015. 
  42. "Amazon EC2 Container Service (ECS) – Container Management for the AWS Cloud". aws.amazon.com. 2014-11-13. Consultado o 29 de abril de 2017. 
  43. "Stratoscale Raises $32M to Build Docker-Supporting OpenStack Clouds on Commodity Servers". www.datacenterknowledge.com (en inglés). Consultado o 3 de xaneiro de 2016. 
  44. "IBM & Docker partner to Deliver Apps in the Cloud & on prem". www-03.ibm.com (en inglés). 2014-12-04. Consultado o 20 de abril de 2015. 
  45. Lardinois, Frederic (2015-06-22). "Docker, CoreOS, Google, Microsoft, Amazon And Others Come Together To Develop Common Container Standard". TechCrunch (en inglés). Consultado o 8 de agosto de 2015. 
  46. "Docker, Tech Giants Team on Open Container Project - Tech Trends on CIO Today". www.cio-today.com. Consultado o 8 de agosto de 2015. 
  47. "Oracle Acquires Docker Container Startup StackEngine, Plans Austin-Based Cloud Computing Center". CRN. 
  48. 262588213843476. "Docker - Updated project statistics". Gist (en inglés). Consultado o 22 de agosto de 2016. 
  49. Blog, Windows Insider; Sarkar, Dona (2016-06-08). "Announcing Windows 10 Insider Preview Build 14361". Windows Insider Blog (en inglés). Consultado o 19 de xuño de 2016. 
  50. "Docker Momentum: 2016 Analysis". www.linkedin.com (en inglés). Consultado o 5 de xaneiro de 2017. 
  51. "Docker embraces Windows Subsystem for Linux 2". ZDNET (en inglés). 
  52. Citrin, Tyler (2020-08-20). "WSL 2 Support is coming to Windows 10 Versions 1903 and 1909". Windows Command Line (en inglés). Consultado o 21 de agosto de 2020. 
  53. "Docker Desktop & WSL 2 - Backport Update" (en inglés). 2020-08-20. Consultado o 21 de agosto de 2020. 
  54. "Docker Desktop is no longer free for enterprise users". InfoWorld (en inglés). 
  55. "Docker acquires AtomicJar, a testing startup that raised $25M in January". TechCrunch (en inglés). 

Véxase tamén

Ligazóns externas

Prefix: a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9

Portal di Ensiklopedia Dunia

Kembali kehalaman sebelumnya