1. Home
  2. Cloud a servery
  3. Docker
  4. Docker – 2. Dockerfiles a images

Docker – 2. Dockerfiles a images

V předešlé časti tohoto seriálu jsme si představili koncept a nástroje projektu Docker a též jsme si Docker nainstalovali. Zmínili jsme si, že základ tvoří kontejnery. V této časti si na příkladech ukážeme, co se vlastně děje před samotným spuštěním kontejnerů. Zkrátka, budeme se věnovat obsahu textového konfiguračního souboru Dockerfile a tomu, jak ovlivňuje spuštění obrazu (image).

Tip: Docker běží výborně ve WebSupport VPS. Vysoušejte prémiový virtuální server ještě dnes.

Co je Dockerfile a jak ho použít

Dockerfile je konfigurační textový soubor, do kterého zapisujeme příkazy na automatizaci sestavení (build) a spuštění (run) obrazu (image). Můžeme například nechat nainstalovat potřebný software či různé závislosti, abychom zabezpečili stabilní vývojářské prostředí. Když tvoříme soubor Dockerfile, dobrá praxe je umístit ho do samostatné složky spolu se všemi soubory, které chceme na sestavení (build) a na spuštění (run) obrazu (image) použít. Příklad se složkou s názvem docker-test v domovské složce přihlášeného uživatele (vlnovka):

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

Vytvořili jsme si tedy složku s názvem docker-test v domovské složce přihlášeného uživatele (vlnovka), přemístili jsme se do něj (první řádek) a následně jsme v prázdné složce docker-test vytvořili textový soubor s názvem Dockerfile (druhý řádek).

V operačním systému Windows název souboru musí být bez koncovky, která se ve Windowsu obyčejně přidává do názvu souborů za poslední tečku vpravo (např. přípona txt).

Připravíme si velmi jednoduchý soubor s názvem index.html, který později necháme načíst přes webový server Nginx v kontejneru:

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

Aktuálně se ve složce docker-test nacházejí 2 soubory: Dockerfile a index.html. Do souboru Dockerfile si teď zapíšeme, že chceme nainstalovat webový server Nginx (první řádek). Příkazem na druhém řádku, do obrazu zkopírujeme soubor index.html, který později zobrazíme přes Nginx. Otevřeme si soubor Dockerfile v textovém editoru nano:

nano Dockerfile

a zapíšeme jednoduchý skript se 2 řádky:

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

Soubor uložíme pomocí klávesové zkratky Ctrl + X a následně stlačením klávesy y a potvrzením klávesou enter.

Příkazy FROM a COPY jsou pouze dva z dalších podporovaných. V ostatních částech tohoto seriálu se budeme zaobírat s vícerými příkazy.

Sestavujeme a spouštíme obrazy (images)

Konfigurační soubor Dockerfile máme připravený a teď můžeme sestavit (build) a spustit (run) obraz (image). Abychom si ověřili správnost napsaného skriptu v souboru Dockerfile, necháme na základě jeho obsahu sestavit obraz s názvem nginx-test (nezapomeneme zkopírovat i tu tečku na konci):

docker build -t nginx-test .

Následně zjistíme, jestli je sestavený obraz v seznamu obrazů:

docker image ls

Jelikož jsme doteď nesestavovali žádné jiné obrazy, vypíšou se 2 obrazy. Jeden s názvem nginx a druhý nginx-test. Ten první je základní obraz, na kterém je postavený ten druhý. Do druhého jsme zkopírovali soubor index.html, proto budeme spouštět právě tento obraz:

docker run -d nginx-test

Že se obraz s názvem nginx-test spustil a vytvořil tak kontejner s webovým serverem Nginx, zjistíme pomocí příkazu:

docker ps

Vypsal se seznam spuštěných kontejnerů. Abychom se do kontejneru dostali a zjistili, jestli v něm všechno funguje jak má, potřebujeme CONTAINER ID (12 znaků z prvního sloupce – zde be08a567a805, vaše se budou lišit). Takto se tedy do kontejneru dostaneme:

docker exec -it be08a567a805 bash

Získali jsme přístup do příkazového řádku (bash) ve vnitřku kontejneru be08a567a805 a teď už pouze stačí vyzkoušet, jestli webový server Nginx funguje a opravdu zobrazí obsah souboru index.html:

curl localhost

Po spuštění příkazu se nám zobrazí obsah souboru index.html (Ahoj z Docker kontejneru!), což znamená, že webový server Nginx funguje a zobrazuje správný obsah.

Spuštěný kontejner ukončíme (první řádek) a vymažeme (druhý řádek):

docker stop be08a567a805
docker rm be08a567a805

Teď můžeme změnit obsah souboru index.html ve složce docker-test a opět sestavit (build) a spustit (run) obraz (image) s názvem nginx-test, jak píšeme výše.

Abychom při každé změně obsahu souboru index.html nemuseli ukončovat, mazat, sestavovat a spouštět obraz, pracujeme s obsahem (volume).

Shrnutí

Ukázali jsme si jak sestavit (build) a spustit (run) obraz (image) s konkrétními nastaveními, které jsme zapsali do textového konfiguračního souboru Dockerfile. Dostali jsme se do vnitra spuštěného obrazu (čili do kontejneru), abychom si ověřili, že všechno funguje správně.

Aktualizováno: 12 října, 2021

Byl tento článek užitečný?

Related Articles

Zákaznická podpora
24 hodin denně, 7 dní v týdnu
KONTAKTOVAT PODPORU