Docker és un projecte open-source que permet automatitzar el desplegament d’aplicacions en entorns Linux. Està basat en el format estàndard de contenidors de Linux (LXC) i permet córrer aplicacions en ambients aïllats de manera lleugera.
Necessitat
Fa uns anys la virtualització de sistemes era una aposta de futur en el món de les TI. Avui en dia és una eina d’optimització molt estesa en el món empresarial gràcies als avantatges que proporciona, com per exemple:
- Optimització de recursos físics – és possible tenir més d’un SO executant-se en una màquina
- Permet el balanceig de càrrega
- Gestió més centralitzada
A mesura que els sistemes es van escalant, comença a ser necessari optimitzar (encara més) els recursos que fem servir per desplegar aplicacions per tal de reduir costos i millorar la disponibilitat, i Docker se’ns presenta com una possible solució.
Què és Docker
Docker és un projecte open-source que permet automatitzar el desplegament d’aplicacions en entorns Linux. Està basat en el format estàndard de contenidors de Linux (LXC) i permet córrer aplicacions en ambients aïllats de manera lleugera.
Docker ens permet crear “imatges” amb la nostra aplicació i les seves dependències, garantint que aquesta funcionarà, a escala, en producció o en qualsevol altre ambient. D’aquesta manera evitem l’anomenat “dependency hell” i facilitem el desplegament i manteniment de les aplicacions.
Origen imatge : https://www.docker.io/the_whole_story/Quines diferències té amb una MV aleshores?
A diferència de les màquines virtuals tradicionals, un contenidor Docker no inclou un sistema operatiu independent, sinó que es basa en la funcionalitat del sistema operatiu proporcionat per la infraestructura subjacent. Això és gràcies a fer servir contenidors de Linux (LXC), ja que corren sobre el mateix sistema operatiu que el mateix host. A més a més fa servir AuFS1 per sistema de fitxers i s’encarrega de les xarxes pels usuaris.
Origen imatge : https://www.docker.io/the_whole_story/Exemples
Per veure exemples pràctics la web de Docker és un molt bon recurs ja que proporciona diversos exemples, des d’un simple “hello world”a una aplicació web en Node.js o com compartir dades entre diversos contenidors amb CouchDB:
http://docs.docker.io/en/latest/examples/
Videos-tutorial
A continuació us compartim la trilogia de tutorials que hem creat amb la nostra experiència adquirida després de les tasques que vam dur a terme amb Telefonica I+D:
Tutorial Docker 1: Installation Dockerfile
Al primer podeu veure com instalar Docker i com crear un Dockerfile (el que ve a ser un script per automatitzar les builds de les imatges).
Tutorial Docker 2: Tutorial PrivateRegistry
Al segon anem pas a pas en la creació d’un Registry privat. L’objectiu és aconseguir tenir un repositori privat on emmagatzemar les nostres imatges privades, enlloc de fer servir el repositori públic de Docker.
Tutorial Docker 3: Tutorial autoDeploy Conclusion
Al tercer podeu veure l’script d’automatització que vam crear per tal de desplegar contenidors de Docker automàticament especificant uns certs paràmetres de configuració.
Podeu consultar el codi de l’script al següent enllaç: https://github.com/PDI-DGS-Protolab/docker_deployment
Recursos
LXC
https://help.ubuntu.com/lts/serverguide/lxc.html
http://linuxcontainers.org/
AuFS
http://en.wikipedia.org/wiki/Aufs
http://www.thegeekstuff.com/2013/05/linux-aufs/
Docker
https://www.docker.io/the_whole_story/
https://www.docker.io/learn/dockerfile/
Autoria
Aquest article ha estat realitzat per María José Rodríguez i Carlos Person com a resultat de la feina realitzada per ells mateixos i Marc Comino, integrants de l’equip uLab UPC.
—————————–AuFS1 és un sistema d’arxius en capes, de manera que es pot tenir una part només de lectura, i una part d’escriptura, i combinar-ho. D’aquesta manera es poden tenir parts comunes del SO de només lectura que es comparteixin a través de tots els contenidors, i aleshores assignar a cada contenidor la seva pròpia muntura per a l’escriptura