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 miniatura|Docker pot utilitzar diferents interfícies per accedir a les capacitats de virtualització del nucli de Linux. 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.

Imatges i contenidors És molt important conèixer alguns conceptes per entendre l'èxit de Docker com a tecnologia de contenidors. Una imatge de contenidor, anomenada simplement imatge, és un paquet estandarditzat que inclou tots els fitxers, binaris, llibreries i configuracions per executar un contenidor. Les imatges compleixen dues propietats. En primer lloc, les imatges són immutables, no poden canviar, En segon lloc i estan compostes per capes apilables. Les imatges poden afegir funcionalitats en una nova capa a la imatge anterior. Aquestes dues propietats fan que es puguin estendre les aplicacions més fàcilment i ràpidament sense haver de començar de zero.

Els contenidors Docker, en canvi, són instàncies temporals de les imatges que utilitzen la imatge com un fitxer de només escriptura i tenen una capa d'escriptura i lectura per sobre. Els contenidors es poden crear i esborrar molt ràpidament perquè reutilitzen els fitxers de les imatges.

Els contenidor s'executen com una aplicació client-servidor amb un servidor , dockerd o dimoni docker , i APIs que especifiquen interfícies que els programes poden utilitzar per parlar i instruir el dimoni Docker. des del client d'interfície de línia d'ordres (CLI) anomenat docker.

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

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

Categoria:Programari per a GNU/Linux Categoria:GNU/Linux Categoria:Virtualització Categoria:Programari lliure