Docker – 2. Dockerfiles a images

V predošlej časti tohto seriálu sme si predstavili koncept a nástroje projektu Docker a tiež sme si Docker nainštalovali. Spomenuli sme si, že základ tvoria kontajnery. V tejto časti si na príkladoch ukážeme, čo sa vlastne deje pred samotným spustením kontajnerov. Skrátka, budeme sa venovať obsahu textového konfiguračného súboru Dockerfile a tomu, ako ovplyvňuje spustenie obrazu (image).

Tip: Docker beží výborne vo WebSupport VPS. Vyskúšajte prémiový virtuálny server ešte dnes.

Čo je Dockerfile a ako ho použiť

Dockerfile je konfiguračný textový súbor, do ktorého zapisujeme príkazy na automatizáciu zostavenia (build) a spustenia (run) obrazu (image). Môžeme napríklad nechať nainštalovať potrebný softvér či rôzne závislosti, aby sme zabezpečili stabilné vývojárske prostredie. Keď tvoríme súbor Dockerfile, dobrá prax je umiestniť ho do samostatného priečinka spolu so všetkými súbormi, ktoré chceme na zostavenie (build) a na spustenie (run) obrazu (image) použiť. Príklad s priečinkom s názvom docker-test v domovskom priečinku prihláseného používateľa (vlnovka):

mkdir ~/docker-test && cd ~/docker-test
touch Dockerfile

Vytvorili sme si teda priečinok s názvom docker-test v domovskom priečinku prihláseného používateľa (vlnovka), premiestnili sme sa doň (prvý riadok) a následne sme v prázdnom priečinku docker-test vytvorili textový súbor s názvom Dockerfile (druhý riadok).

V operačnom systéme Windows názov súboru musí byť bez koncovky, ktorá sa vo Windowse zvyčajne pridáva do názvu súborov za poslednú bodku vpravo (napr. prípona txt).

Pripravíme si veľmi jednoduchý súbor s názvom index.html, ktorý neskôr necháme načítať cez webový server Nginx v kontajneri:

echo "Ahoj z Docker kontajnera!" > index.html

Aktuálne sa v priečinku docker-test nachádzajú 2 súbory: Dockerfile a index.html. Do súboru Dockerfile si teraz zapíšeme, že chceme nainštalovať webový server Nginx (prvý riadok). Príkazom na druhom riadku, do obrazu skopírujeme súbor index.html, ktorý neskôr zobrazíme cez Nginx. Otvoríme si súbor Dockerfile v textovom editore nano:

nano Dockerfile

a zapíšeme jednoduchý skript s 2 riadkami:

FROM nginx
COPY index.html /usr/share/nginx/html

Súbor uložíme pomocou klávesovej skratky Ctrl + X a následne stlačením klávesu y a potvrdením klávesom enter.

Príkazy FROM a COPY sú iba dva z ďalších podporovaných. V ostatných častiach tohto seriálu sa budeme zaoberať s viacerými príkazmi.

Zostavujeme a spúšťame obrazy (images)

Konfiguračný súbor Dockerfile máme pripravený a teraz môžeme zostaviť (build) a spustiť (run) obraz (image). Aby sme si overili správnosť napísaného skriptu v súbore Dockerfile, necháme na základe jeho obsahu zostaviť obraz s názvom nginx-test (nezabudneme skopírovať aj tú bodku na konci):

docker build -t nginx-test .

Následne zistíme, či je zostavený obraz v zozname obrazov:

docker image ls

Keďže sme doteraz nezostavovali žiadne iné obrazy, vypíšu sa 2 obrazy. Jeden s názvom nginx a druhý nginx-test. Ten prvý je základný obraz, na ktorom je postavený ten druhý. Do druhého sme skopírovali súbor index.html, preto budeme spúšťať práve tento obraz:

docker run -d nginx-test

Že sa obraz s názvom nginx-test spustil a vytvoril tak kontajner s webovým serverom Nginx, zistíme pomocou príkazu:

docker ps

Vypísal sa zoznam spustených kontajnerov. Aby sme sa do kontajnera dostali a zistili, či v ňom všetko funguje ako má, potrebujeme CONTAINER ID (12 znakov z prvého stĺpca – tu be08a567a805, vaše sa budú líšiť). Takto sa teda do kontajnera dostaneme:

docker exec -it be08a567a805 bash

Získali sme prístup do príkazového riadku (bash) vo vnútri kontajnera be08a567a805 a teraz už iba stačí vyskúšať, či webový server Nginx funguje a naozaj zobrazí obsah súboru index.html:

curl localhost

Po spustení príkazu sa nám zobrazí obsah súboru index.html (Ahoj z Docker kontajnera!), čo znamená, že webový server Nginx funguje a zobrazuje správny obsah.

Spustený kontajner ukončíme (prvý riadok) a vymažeme (druhý riadok):

docker stop be08a567a805
docker rm be08a567a805

Teraz môžeme zmeniť obsah súboru index.html v priečinku docker-test a opäť zostaviť (build) a spustiť (run) obraz (image) s názvom nginx-test, ako píšeme vyššie.

Aby sme pri každej zmene obsahu súboru index.html nemuseli ukončovať, mazať, zostavovať a spúšťať obraz prcujeme s obsahom (volume).

Zhrnutie

Ukázali sme si ako zostaviť (build) a spustiť (run) obraz (image) s konkrétnymi nastaveniami, ktoré sme zapísali do textového konfiguračného súboru Dockerfile. Dostali sme sa do vnútra spusteného obrazu (čiže do kontajnera), aby sme si overili, že všetko funguje správne.

Aktualizované 26. novembra 2020

Bol pre vás tento návod nápomocný?

Mohlo by vás tiež zaujímať:

Spýtajte sa nás, radi poradíme
Po - Ne 8:00-22:00
Kontaktovať podporu