# Docker

Docker és un projecte de codi obert que automatitza el desplegament d'aplicacions dins de contenidors de programari, proporcionant així una capa addicional d'abstracció i automatització de virtualització d'aplicacions en diferents sistemes operatius.
Docker utilitza característiques d'aïllament de recursos del nucli de Linux, com ara cgroups i espais de noms (namespaces) per permetre que «contenidors» independents s'executin dins d'una sola instància de Linux, evitant d'aquesta manera la sobrecàrrega que implica iniciar i mantenir màquines virtuals.
El suport del kernel de Linux per als espais de noms aïlla allò que pot accedir una aplicació del seu entorn operatiu, incloent-hi arbres de procés, xarxa, identificador d'usuari i sistemes de fitxers muntats, mentre que els cgroups del nucli proporcionen aïllament de recursos, incloent-hi la CPU, la memòria, el bloc d'E/S i de la xarxa.
Des de la versió 0.9, Docker inclou la biblioteca libcontainer com la seva pròpia manera d'utilitzar directament les facilitats de virtualització que ofereix el nucli de Linux, a més d'utilitzar les interfícies abstretes de virtualització mitjançant libvirt, LXC (Linux Containers) i systemd-nspawn.
D'acord amb la companyia analista de la indústria 451 Research, «Docker és una eina que pot empaquetar una aplicació i les seves dependències en un contenidor virtual que es pot executar en qualsevol servidor Linux. Això ajuda a permetre la flexibilitat i portabilitat on l'aplicació es pot executar, ja sigui en instal·lacions físiques, en un núvol públic o núvol privat, etc.»

## Resum

Docker implementa una API d'alt nivell per proporcionar contenidors lleugers que executen processos de manera aïllada.
Construït sobre les facilitats proporcionades pel nucli de Linux (principalment cgroups i namespaces), un contenidor Docker, a diferència d'una màquina virtual, no requereix incloure un sistema operatiu independent. En el seu lloc, es basa en les funcionalitats del nucli i utilitza l'aïllament de recursos (CPU, la memòria, el bloc E/S, xarxa, etc.) i espai de noms separats per aïllar l'accés d'una aplicació al sistema operatiu. Docker accedeix a la virtualització del nucli de Linux ja sigui directament a través de la biblioteca libcontainer (disponible des de Docker 0.9), o indirectament a través de libvirt, LXC o systemd-nspawn.
Mitjançant l'ús de contenidors, els recursos poden ser aïllats, els serveis restringits, i s'atorga als processos la capacitat de tenir un accés gairebéprivat del sistema operatiu amb el seu propi identificador d'espai de procés, l'estructura del sistema de fitxers, i les interfícies de xarxa. Diferents contenidors comparteixen el mateix nucli, però cada contenidor pot ser restringit a utilitzar només una quantitat definida de recursos, com ara CPU, memòria i E/S.
Fer servir Docker per crear i gestionar contenidors pot simplificar la creació de sistemes altament distribuïts, permetent que diferents aplicacions i altres processos funcionin de forma autònoma en una única màquina física o en diverses màquines virtuals. Això permet que el desplegament de nodes es realitzi a mesura que es disposa de recursos o quan es necessitin més nodes, la qual cosa permet una plataforma com a servei d'estil de desplegament i ampliació dels sistemes com a Apache Cassandra, MongoDB o Riak. Docker també simplifica la creació i el funcionament de les tasques de càrrega de treball o les cues, com també altres sistemes distribuïts.

## Història

Solomon Hykes va començar Docker com un projecte intern dins de dotCloud, una empresa que treballava en una plataforma com un servei (PaaS), juntament amb les contribucions d'altres enginyers la mateixa empresa, com ara Andrea Luzzardi i Francois-Xavier Bourlet. Jeff Lindsay també va participar-hi com a col·laborador independent. Docker representa una evolució de la tecnologia patentada de dotCloud, que és al seu torn construïda sobre projectes de codi obert anteriors com Cloudlets.
Docker va ser alliberat com a codi obert al març de 2013. El 13 de març de 2014, amb el llançament de la versió 0.9, Docker va deixar d'utilitzar LXC com a entorn d'execució per defecte i ho va reemplaçar amb la seva pròpia biblioteca, libcontainer, escrita en el llenguatge de programació Go.
Una anàlisi en 2018 va mostrar les següents organitzacions com les principals contribuents de Docker: Red Hat (el principal contribuïdor, encara més que l'equip de Docker en si), l'equip de Docker, Microsoft, IBM, Google, Cisco Systems i Amadeus IT Group.

## Vegeu també

* CoreOS
* DevOps

## Referències

* ↑ O'Gara, Maureen. «Ben Golub, Who Sold Gluster to Red Hat, Now Running dotCloud». SYS-CON Media, 26-07-2013. Arxivat de l'original el 2019-09-13. [Consulta: 9 agost 2013].
* ↑ «Docker Documentation: Kernel Requirements». docker.readthedocs.org, 04-01-2014. Arxivat de l'original el 21 d'agost de 2014. [Consulta: 20 agost 2014].
* ↑ «Yet Another Reason Containers Don't Contain: Kernel Keyrings». projectatomic.io. Arxivat de l'original el 2015-04-13. [Consulta: 13 abril 2015].
* ↑ «Docker libcontainer unifies Linux container powers». ZDNet, 11-06-2014. [Consulta: 30 juliol 2014].
* ↑ «libcontainer - reference implementation for containers». github.com. [Consulta: 30 juliol 2014].
* 1 2 3 «Docker 0.9: Introducing execution drivers and libcontainer». docker.com, 10-03-2014. Arxivat de l'original el 2015-02-21. [Consulta: 20 gener 2015].
* 1 2 Noyes, Katherine. «Docker: A 'Shipping Container' for Linux Code». Linux.com, 01-08-2013. [Consulta: 9 agost 2013].
* 1 2 Avram, Abel. «Docker: Automated and Consistent Software Deployments». InfoQ, 27-03-2013. [Consulta: 9 agost 2013].
* ↑ Swan, Chris. «Docker drops LXC as default execution environment». InfoQ, 13-03-2014. [Consulta: 20 gener 2015].
* ↑ Hall, Adron. «OSCON : Conversations, Deployments, Architecture, Docker and the Future?». CloudAve, 31-07-2013. Arxivat de l'original el 2019-03-27. [Consulta: 9 agost 2013].
* ↑ Reeder, Travis. «How Docker Helped Us Achieve the (Near) Impossible». Iron.io, 22-04-2014. Arxivat de l'original el 8 d'agost de 2014. [Consulta: 25 juliol 2014].
* ↑ Krazit. «Docker founder Solomon Hykes leaving company, cites need for enterprise-focused CTO» (html). Geekwire, 28-03-2018. Arxivat de l'original el 18 de febrer de 2019. [Consulta: 12 març 2019].
* ↑ «One home for all your apps». dotCloud. Arxivat de l'original el 17 de maig de 2014. [Consulta: 8 maig 2014].
* ↑ «Look who's helping build Docker -- besides Docker itself». InfoWorld, 27-05-2015.

## Enllaços externs

* Lloc Oficial
* Repositori git de libcontainer
* "Linux Containers i el núvol del futur" per Rami Rosen
* Juga amb Docker
* Parc de jocs de Docker en línia