O nás     Inzerce     KontaktSpolehlivé informace o IT již od roku 2011
Hledat
Nepřehlédněte: Top z IT: Pozoruhodné IT produkty pro rok 2025
Správa dokumentů
Digitální transformace
Informační systémy
Hlavní rubriky: Informační systémy, Mobilní technologie, Datová centra, Sítě, IT bezpečnost, Software, Hardware, Zkušenosti a názory, Speciály

Pozoruhodné IT produkty 2025
E-knihy o IT zdarma
Manuál Linux

Docker krok za krokem: Kontejnerizované aplikace dovolují spustit cokoli kdekoli

Kontejnerizace aplikací je stále populárnější a není divu. Chcete co nejrychleji a bez složitého nastavování spustit nějakou serverovou aplikaci? Díky systému Docker prostě napíšete docker run... Chcete, aby vaše aplikace běžela kdekoli, kde je Docker? Prostě ji zkontejnerizujete... Docker nachází uplatnění mezi vývojáři i v produkčním prostředí a leckdo už se neomezuje jen na serverové aplikace. Pojďme se na Docker blíže podívat - krok za krokem.

Možná vám titulek článku přijde dost nadsazený, Docker a kontejnerizace aplikací se rozhodně nehodí pro všechny typy softwaru, pravdou ale je, že jsou tyto techniky využívány leckdy i tak, jak bychom ještě před několika lety neočekávali (více o tom v samém závěru článku). Možnost zabalit aplikaci do balíčku a spustit ji pak snadno, rychle a bez potíží kdekoli, je prostě až příliš lákavá. Takže jistě, nespustíte cokoli, ale spustíte mnohé... A rozhodně vám to nejspíš ušetří starosti.

Začínáme s Docker(em)

Protože světu na desktopu stále vládnou Windows a leckdo zřejmě bude s aplikacemi v kontejnerech začínat právě na nich. Nejsnazší způsob, jak nainstalovat Docker na Windows, zahrnuje v optimálním případě jen tři kroky: Je třeba se zaregistrovat (uživatelské jméno a heslo budete později používat v Docker), stáhnout instalační program z Docker Hub (odkaz zde) a spustit ho. Po chvíli - a po jednom restartu PC - by mělo být hotovo. Pokud nenastanou problémy.

Docker má několik požadavků, které musejí být splněny, aby na počítači s Windows fungoval. Tím zásadním je, kromě nechuti k edici Home, podpora virtualizace a DEP (data execution protection). U počítačů z několika posledních let by to neměl být problém, standardně je to podporováno, zapnuto v BIOSu i ve Windows, takže by vše mělo proběhnout hladce. Zkušenosti ale ukazují, že tomu tak ani zdaleka být nemusí. I když je vše povoleno - a v přehledu Funkce systému Windows v nastavení se vše tváří OK, Docker může odmítat startování.

Konkrétně může psát: "An error occurred. Hardware assisted virtualization and data execution protection must be enabled in the BIOS. See ...". Nápověda na webu Docker je v tomto případě naprosto k ničemu a nezbývá než začít experimentovat. V našem případě pomohly následující kroky: V příkazovém řádku (správce) jsme zadali nejprve příkaz dism (Deployment Image Servicing and Management), a to takto: dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All, poté BCDedit (Boot Configuration Data) takto: bcdedit /set hypervisorlaunchtype auto. Po restartu pak konečně Docker Hypervizor našel a byl s ním spokojený natolik, že se spustil. Teď už se stačí jen přihlásit dříve vytvořeným uživatelským účtem.

Za zmínku stojí i další varování z diskusních fór, a to před problémy kompatibility Dockeru s Intel HAXM i s některými dalšími druhy softwaru, včetně například některých antivirových programů.

Nastavení Dockeru

Po spuštění Dockeru, které se standardně děje po přihlášení uživatele do Windows, se objeví ikona v oznamovací oblasti Hlavního panelu Windows. Pravým tlačítkem se dostanete do menu a jako první můžete provést nastavení. Pokud budete Dockers používat jen občas, je rozumné zrušit zde automatické spouštění Docker po přihlášení do Windows a spouštět ho ručně. Dle potřeby tu také můžete nastavit sdílené diskové jednotky, limitovat dostupné hardwarové prostředky, provést nastavení sítě nebo povolit Kubernetes.

První kroky s Docker(em)

Docker z příkazového řádku
Docker z příkazového řádku
Nyní tedy máte spuštěn Docker a přes jeho ikonu se k němu kdykoli dostanete. Můžete ale také spustit příkazový řádek a pracovat s Dockerem přes něj. Zkuste třeba příkaz: docker --version. Nám se aktuálně vypsalo: Docker version 18.09.2, build 6247962. OK, to možná ještě není úplně zajímavé, udělejme tedy krok dál

Teď zadejte příkaz docker run hello-world. Žádný hello-world teď docker nikde nemá, ale přesto se pustí do jeho spouštění - a o postupu vás bude následně informovat. Takže se objeví: "Hello from Docker! This message shows that your installation appears to be working correctly."

A jak se stalo, že se něco spustilo? Docker to hned vysvětluje: Aby se vygenerovala tato zpráva, Docker klient kontaktoval Docker daemon. Ten stáhl "hello-world" image z Docker Hub. Docker daemon vytvořil nový kontejner z tohoto image a spustil jeho obsah. Ten vygeneroval uvedenou hlášku. Docker daemon pak streamoval tento výstup do Docker klienta, který ji odeslal na váš terminál.

A vzápětí se dočtete i další doporučení: Zkuste něco ambicioznějšího, můžete spustit třeba kontejner s Ubuntu příkazem: docker run -it ubuntu bash. Ale to je samozřejmě jen jedna z možností...

Jak spustit Linux Ubuntu ve Windows s Docker

Nginx spuštěný v kontejneru je dostupný za pár sekund
Nginx spuštěný v kontejneru je dostupný za pár sekund
Výše je řeč o Ubuntu a jeho spuštění je koneckonců dalším příkladem z nápovědy k Dockeru, tak pojďme do toho. Spustíme si Ubuntu a poté webový server. Zadáme: docker run --interactive --tty ubuntu bash. Stáhne se (za předpokladu, že jsme ho nepoužívali už dříve) Ubuntu Linux a spustí se interaktivní terminál s promptem v podobě: root@2764c811d727:/# - číslo za @ je hostname a současně i ID kontejneru. Opustíte ho, jak jinak, příkazem exit. Můžete ho samozřejmě zase znovu spustit v novém kontejneru (příkazem výše), teď už se znovu nestahuje.

Byla výše řeč o webovém serveru? Zkusme spustit nginx: docker run --detach --publish 80:80 --name webserver nginx. Opět se stáhne příslušný balík a nginx se spustí. Do toho vám nejspíš zakřičí firewall Windows a vy budete muset serveru povolit komunikaci v síti. A teď už jen v libovolném prohlížeči ve Windows zadejte http://localhost a voila - web server je skutečně nainstalovaný a funkční.

Je ovšem na místě poznámka ke spouštění web serveru: Volba --detach vyvolá spuštění kontejneru v pozadí s tím, že je vypsáno ID kontejneru, --publish publikuje port(y) kontejneru směrem k hostiteli - zde na port 80 port 80 nginxu, --name kontejner pojmenuje. Určitě vás napadá, jak dále s webovým serverem - nebo s jakýmkoli jiným balíčkem - pracovat. Pomoc vždy hledejte v dokumentaci k dané kontejnerizované aplikaci na hub.docker.com.

Mimochodem: Když chcete vidět, které kontejnery právě v Docker běží, zadejte příkaz docker container ls. Chcete-li vidět i ty, které už běžely dříve, zadejte docker container ls -all. Všimněte si, že pokud jste kontejnery nepojmenovali, dostaly nějaké jméno od systému. A teď web server zastavíme příkazem: docker container stop webserver. A můžeme kontejner(y) i odstranit příkazem docker container rm webserver xx yy zz ..., kde xx, yy, zz ... jsou jména dříve spuštěných kontejnerů. Nebo naopak můžeme kontejner znovu spustit, např. kontejner webserver příkazem: docker container start webserver.

Kdykoli si nevíte rady, pomůže vám příkaz: docker --help. Nebo aspoň napoví.

Pár důležitých poznámek na závěr

Hodí se vědět, že Docker uchovává informace vytvořených kontejnerů, sítí, vyrovnávacích pamětí, images... Pokud chcete ty nepoužívané smazat a uvolnit si tak místo, použijte (s rozvahou) příkaz docker system prune. Varování, které se zobrazí, je snad samovysvětlující. Pokud chcete smazat jen zastavené kontejnery, použijte docker container prune.

Technologie kontejnerů se běžně používá pro backendové serverové aplikace, objevují se ale i frontendová nasazení, kde je vyžadováno grafické rozhraní. Vedou se diskuse, najdete příznivce i odpůrce tohoto způsobu využití Dockeru, každopádně stojí za zmínku, že typicky lze GUI realizovat (kromě webového přístupu, ovšem) prostřednictvím sdílení XServeru hostitele s kontejnerem. Ve Windows můžete použít třeba VcXsrv.

V tomto textu jsme jen zlehka sklouzli po povrchu kontejnerizace a Dockeru. Zajímavými tématy jsou Kubernetes a orchestrace kontejnerů obecně, kontejnery v cloudu, přístupy ke kontejnerizaci aplikací i samotné use cases kontejnerizace. Alespoň k některým z nich se plánujeme v blízké budoucnosti vrátit.


(20. 2. 2019 | redakce2)

Facebook Twitter
Komentáře, názory a rady

Zatím sem nikdo nevložil žádný komentář. Buďte první...

>>> Číst a vkládat komentáře <<<
©2011-2024 BusinessIT.cz, ISSN 1805-0522 | Názvy použité v textech mohou být ochrannými známkami příslušných vlastníků.
Provozovatel: Bispiral, s.r.o., kontakt: BusinessIT(at)Bispiral.com | Inzerce: Best Online Media, s.r.o., zuzana@online-media.cz
O vydavateli | Pravidla webu BusinessIT.cz a ochrana soukromí | Používáme účetní program Money S3 | pg(6759)