Hello world amb Docker

Hello world amb Docker, o el que és el mateix, aprèn Docker des del principi

Hello world amb Docker

Amb aquesta mini sèrie de tutorials veuràs com separar el teu projecte de la màquina sobre la qual s'executa mitjançant Docker.

Aquest és el segon tutorial sobre com treballar amb Docker, en l'anterior article us vam presentar que és aquesta eina i en què ens pot ajudar, en cas que t'ho perdessis ho pots llegir seguint aquest enllaç: ¿Què és Docker?

Així doncs, com a mode d'introducció mes genèrica i per a posar-nos a treballar abans d'anar a tota la teoria, mostrarem el funcionament de Docker amb l'exemple més bàsic amb el que tots els desenvolupadors ens introduïm a les noves eines, avui farem un Helloworld amb Docker.

Per a poder posar en pràctica el que t'explicarem el millor és que ja tinguis instal·lada l'eina de Docker, però si no, igualment intentarem mostrar les bondats que ens pot aportar al nostre dia a dia com desenvolupadors.

Comencem!

El primer que hem de fer un cop instal·lat Docker és anar a la nostre línia de comandes i introduir la següent instrucció:

docker run hello-world

I ja està, fi de la part pràctica, divertit a què si... d'acord, d'acord, poder ha estat massa breu però de moment deixeu-me explicar que ha passat, perquè de segur que heu vist un munt de coses estranyes a la vostra pantalla i no sabeu per què.

El que us deu haver aparegut deu ser una cosa molt semblant, pràcticament igual, a això:

Com diria un bon desenvolupador anirem per parts així que...

¿Que l'hi hem demanat a Docker?

Primer de tot, un ordinador només fa exactament el que se li diu, o en aquest cas, el que se li programa, així doncs començarem per entendre que l'hi hem dit que faci.

docker run hello-world

En aquest cas és tan simple com un: docker si us plau, executa la imatge hello-world.

Aquí ens apareixen els dos primers conceptes que s'han de tindre molt clars: executar i imatge. Les imatges, tal com veurem en els propers tutorials, es poden crear (o generar, o construir) i executar.

Ok, si l'hi hem dit a la màquina una cosa tan simple com això, que és tot el que m'ha sortit com resposta?

¿Que ha fet Docker?

El primer que ha anat a fer ha estat anar a cercar la imatge que l'hi hem demanat a executar, en aquest cas la imatge de hello-world...

...però tal com ens diu el propi docker no l'ha trobat a la nostre màquina. Així doncs si no la tenim... que ha estat tota la resta de coses que han aparegut?

Doncs com que no l'ha trobat a la nostre màquina ha anat a cercar-la a internet, però no ha anat a qualsevol lloc, no. Docker funciona amb l'ajuda d'un repositori d'imatges propi on tothom pot pujar i compartir les imatges creades si vol, aquest lloc es diu Docker hub, aquí podreu trobar fins i tot sistemes virtualitzats amb node o qualsevol altra eina que necessiteu totalment configurada i llesta per a fer-la servir, tranquils, també parlarem d'això.

Poder algú s'ha adonat però quan Docker ens ha dit que no havia trobat la imatge a la nostre màquina el nom tenia alguna cosa mes, en aquest cas ens ha cercat: "hello-world:latest", que es això del "latest"? Com ja hem comentat, al repositori d'imatges de Docker Hub no tan sols podem trobar imatges pre muntades, sinó que a més a més podem versionar-les, de manera que si les anem millorant podem indicar exactament quina versió ens interessa. En el cas de no indicar versió sempre anirà a buscar l'última i més actualitzada.

I això és el que ens ha passat aquí, Docker ha cercat al seu repositori la última (latest) versió de la imatge que li hem demanat (hello-world) i se l'ha descarregat.

I que ha passat un cop ja ha obtingut la imatge, doncs tal com l'hihavíem demanat l'ha executat, per tant a partir de la imatge ens ha creat un contenidor que a la seva vegada ha executat la comanda per a la qual estava definit.

Recordeu que ja havíem dit que una imatge podia contenir un servidor en node, doncs la imatge defineix la configuració del sistema a virtualitzar, i el contenidor (el sistema virtual en execució) executa la comanda, així doncs quan diem a Docker que executi una imatge en realitat li demanem que creí un contenidor que executarà la comanda per a la qual ha estat definit i s'aturarà. En el nostre cas això és el que hem obtingut:

Una fantàstica benvinguda per part dels creadors de Docker i una explicació molt, molt breu... i en el llenguatge de Shakespeare, del que acaba de succeir, vamos, el mateix que acabeu d'aprendre amb aquest tutorial, i encara diuen que els garrepes som nosaltres, ni que els hi cobressin les paraules ;)

De moment crec que ja teniu prou per a pair, seguirem aprofundint en aquesta eina i amb què ens pot ajudar en les properes entrades al blog, us esperem!

Bonus track

Poder una sola comanda per tota aquesta tirallonga ha estat una mica massa, així que us dono un parell mes:

  • Com veure les imatges que teniu en la vostra màquina:
    • docker image ls
  • Com veure els contenidors en execució:
    • docker ps
  • Com veure els contenidors que ja han acabat d'executar-se:
    • docker ps -a