Docker està transformant la forma en què es desenvolupa, distribueix i executa el software. L'avantatge: podem encapsular tot l'entorn per passar-lo a producció amb les mateixes característiques.
Docker és un projecte de codi lliure que s’ha convertit en un dels termes de moda per les avantatges que proporciona, entre altres, als professionals del desenvolupament web i d’aplicacions, o els administradors de sistemes, per la facilitat que suposa treballar amb el concepte de contenidors.
Docker està transformant la forma en què es desenvolupa, distribueix i executa el software. L’avantatge és molt evident, podem encapsular tot l’entorn de treball de manera que els desenvolupadors saben que poden estar treballant al seu servidor local, amb la seguretat que, en arribar el moment de posar-ho en producció, estaran executant-se amb la mateixa configuració sobre la qual s’han fet totes les proves.
D’aquesta manera, podrem reduir els temps de proves i adaptacions al hardware del qual es disposa a l’entorn de producció.
Docker ens ajuda a no malgastar el nostre temps configurant l’entorn i les dependències del sistema, perquè ho podrem desplegar fàcilment. Algo molt útil tant per a grans empreses, com Red Hat o Google, com per a les petites startups que comencen a desenvolupar la seva aplicació.
Fent història
El concepte de contenidor es va iniciar a la plataforma Unix, d’on va saltar a Linux. Docker, partint de Linux, ha aconseguit simplificar i convertir-se en una tecnologia flexible i fàcil d’utilitzar per treballar amb contenidors.
La analogia amb la indústria del transport és molt il·lustrativa i mostra el camí futur en el desenvolupament de software. Fa dècades la indústria del transport es va reunir per crear un contenidor intermodal.
Aquesta és la raó per la qual els contenidors, en l’actualitat, tenen uns tamanys estàndard, i es van desenvolupar perquè fossin fàcils de moure entre diferents tipus de transport (vaixells, trens, camions), sense importar el producte que continguessin. Part de la globalització s’explica amb canvis com aquests.
Les diferències entre Docker i les màquines virtuals
Encara que, per la seva naturalesa, es semblen a les clàssiques màquines virtuals, estem parlant d’algo més avançat perquè ens ofereixen una major eficiència i senzillesa.
- Per començar, els contenidors de Docker comparteixen recursos amb el sistema operatiu sobre el qual s’executen. D’aquesta manera podem arrencar o aturar el contenidor ràpidament, mentre que les màquines virtuals, com Vmware, Citrix o Virtualbox, es aïllen del sistema operatiu sobre el qual treballen i es comuniquen a través del hipervisor.
- La portabilitat dels contenidors fa que els problemes causats per canviar l’entorn on està corrent l’aplicació es redueixin a la mínima expressió.
- Si les màquines virtuals volen simular l’entorn diferent al nostre, el contenidor de Docker es centra en crear l’aplicació i que es pugui portar tot el contingut de manera senzilla.
Docker container engine
El container engine és el responsable d’iniciar i aturar els continguts d’una manera similar a com ho fa el hipervisor en una màquina virtual.
Els processos que corren en el contingut són equivalents als processos nadius en el host.
Docker hub
Docker hub és un repositori públic en el núvol, similar a Github, per distribuir els continguts. Està mantingut per la pròpia Docker i hi ha multitud d’imatges, de caràcter gratuït, que es poden descarregar i així no haver de fer la feina des de zero al poder aprofitar “plantilles”.
També podem crear els nostres propis repositoris privats i, fins i tot, disposa d’una botiga.
Docker s’ha convertit en l’estàndard de facto
En 2015 s’estén la Iniciativa de contenidors oberts i acaba de desbancar a altres propostes existents com:
Docker com a resposta a les necessitats d’avui en dia
Lluny queda, per exemple, treballar en entorns tan controlats com el típic LAMP. Avui en dia hi ha una varietat de frameworks, com Angular JS, NOSQL, Rest API que et permeten crear serveis a la núvol, que tenen moltes dependències que són necessàries d’instal·lar per desenvolupar.
A més, els professionals, avui en dia, treballen des de qualsevol ordinador.
a allò que s’afegeix l’entorn de la màquina de testing i, finalment, a l’entorn de producció.
Cadascun d’aquests entorns pot tenir diverses configuracions:
- Diferents sistemes operatius
- Versió de les llibreries
- Amb Docker, com veiem, ens permet estalviar el temps que podem aprofitar per al més important, treballar en les nostres aplicacions.
Instal·lació de Docker
Pots utilitzar diversos sistemes operatius d’escriptori:
- Linux, per exemple en Ubuntu 16.04 LTS Desktop
- Mac, a partir de la versió Yosemite
- Windows 10 en les seves versions Professional i Enterprise
I, per descomptat, en qualsevol versió per a servidors Ubuntu Server, Fedora, CentOS, Debian, Oracle Linux, etc.
També per a sistemes Cloud com Amazon Web Services o Azure de Microsoft
Tantes les instal·lacions com les actualitzacions posteriors són molt senzilles.
Un cop instal·lat només queda arrencar l’aplicació Docker.
Pots gestionar els recursos que vols utilitzar, per exemple, la memòria RAM o el nombre de processadors d’una forma molt fàcil.
Per comprovar que tot funciona correctament podem anar a la línia de comandes i demanar la versió que tenim instal·lada amb la comanda: docker version.
$ docker version
Un cop ja ho tenim, se’ns obren infinites possibilitats per instal·lar entorns de treball d’acord amb els nostres interessos pel desenvolupament.
Podem començar treballant en l’última versió d’Ubuntu per veure “la màgia”. Primer comprova que no tinguem ja instal·lada la imatge d’Ubuntu al nostre Docker i, si no, començarà a descarregar tots els paquets que necessita per començar a treballar.
$ docker run -i -t ubuntu:latest /bin/bash
En el cas d’Ubuntu, en pocs segons ho tindrem llest per començar a treballar perquè el propi Docker ja es basa en Linux, amb la qual cosa gran part es reutilitzarà.
Un cop acabada la descàrrega, si llistem per veure els fitxers i carpetes, podrem veure que ja estem dins d’un sistema operatiu Ubuntu
$ ls
Com veus, les possibilitats són immenses, des de treballar amb un servidor Nginx o Apache en un moment, a llenguatges de programació web com PHP o NodeJs.
Aquí tens dos llibres en els quals et pots recolzar per treure el màxim rendiment a Node: DOCKER. Guia pràctica d’Alberto González i Docker in Action de Jeff Nickoloff.
T’apuntes a desenvolupar de forma més eficient?