NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Lekce 1 - Docker - Teorie a instalace

Vítám všechny středně pokročilé programátory v kurzu o Dockeru. V tomto on-line kurzu si postupně ukážeme, jak tento magický nástroj funguje a jak s ním pracovat.

Minimální potřebná znalost

Jelikož se jedná o průřezový kurz, je vhodné na začátku zmínit, že jsou vyžadovány určité vstupní znalosti:

Co je vlastně Docker?

Docker je virtualizační nástroj, který umožňuje "zabalit" aplikaci do kontejneru a tu pak spouštět bez ohledu na prostředí. Nebo ještě jednodušeji: Docker může "zabalit" aplikaci a její závislosti do virtuálního kontejneru, který lze spustit na jakémkoli počítači se systémem Linux, Windows nebo macOS. Kontejnery totiž vyřešili zásadní nedostatek plné virtualizace.

Kontejnerizace vs plná virtualizace

U plné virtualizace je umožněno vytvářet nové virtuální stroje. Nicméně každý virtuální stroj (počítačový soubor, který se chová jako skutečný počítač) co vznikne, se chová jako vlastní operační systém, a tím pádem vznikají velké režijní náklady.

Některé zdroje uvádí, že plná virtualizace může spotřebovat až 20 % výkonu serveru.

Oproti tomu, kontejnerizace využívá virtualizaci jádra operačního systému, poté jsou všechny kontejnery spouštěny v jednom operačním systému. Díky tomu, že kontejner obsahuje jen specifické soubory pro danou aplikaci, je zaručeno snížení režie a velikosti. Což jsou samozřejmě vlastnosti, které se nám hodí.

Docker

Virtualizační nástroj Docker byl poprvé uveřejněn v roce 2013 jako open source software, což znamená, že zdrojové kódy jsou volně k dispozici a všichni mohou přispívat k vývoji tohoto nástroje. Celý Docker je napsaný v programovacím jazyce GO.

Také je použitelný na všech aktuálně známých a rozšířených platformách (Linux, Win a Mac).

Instalace

Nainstalovat si Docker na svém počítači není vůbec náročná operace. Zároveň je velmi podobná na většině operačních systémů. Společně se podíváme na instalaci na Mac a Windows.

Mac prostředí

Nejdříve si stáhneme instalační soubor v oficiální dokumentaci Dockeru pro Mac:

Docker

Vybereme si odpovídající tlačítko v závislosti na našem procesoru a po kliknutí dojde k automatickému stažení. Primárně se všechny soubory stahují do složky Downloads/. Najdeme tedy právě stažený soubor Docker.dmg a spustíme ho.

Instalace probíhá jako u klasické aplikace, kde klikáme na tlačítko Next dokud se vše nenaistaluje 😊:

Docker

V případě že vše dopadlo v pořádku, uvidíme na ploše známou ikonu Dockeru.

Windows prostředí

Nyní si ukážeme instalaci pro windowsáky.

Požadavky na instalaci

Při instalaci na operačním systému Windows je potřeba mít v patrnost určité předpoklady:

  • procesor podporující SLAT (Second Level Address Translation)
  • povolenou virtualizaci v BIOSu
  • mít nainstalovaný Hyper-V a/nebo subsystém Linux (pokud nebudete mít něco z toho nainstalováno, Docker nás na to při spuštění programu upozorní a následně se vypne)
    • pro subsystém je třeba povolit funkci WSL ve Windowsu

Nejdříve si stáhneme instalační soubor z dokumentace Dockeru:

Docker

Po kliknutí dojde k automatickému stažení. Většinou se všechny soubory stahují do složky Downloads/ (stažené soubory). Najdeme stažený soubor Docker Desktop Installer.exe a spustíme ho.

Instalace probíhá jako u klasické aplikace, kde klikáme na tlačítko Next dokud se vše nenaistaluje. V případě že vše dopadlo v pořádku, uvidíte na ploše známou ikonu Dockeru.

Ověření instalace

Předpokládejme, že se nám podle návodu výše povedlo Docker nainstalovat. Jako vždy po instalaci je vhodné si instalaci ověřit. Jsme vývojáři, a proto budeme primárně používat terminál (resp. příkazovou řádku pro Windows). Otevřeme si terminál (ve Windowsu můžeme pomocí kláves Ctrl+R) a napíšeme příkaz:

docker version

Pokud vše proběhlo v pořádku uvidíme podrobné informace ve výpisu:

docker version - Docker

Příkaz version má jeden volitelný parametr --format (zkráceně -f). Pokud chceme například zobrazit jen verzi klienta, je možné napsat příkaz: docker version --format '{{.Client.Version}}'.

Instalace IDE

Pro psaní Docker souborů a práci s Dockerem nám stačí úplně obyčejný textový editor. Nicméně doporučuji si naistalovat nějaké vývojové prostředí. Osobně mohu doporučit následující vývojová prostředí Visual Studio Code, Eclipse a nebo IntelliJ IDEA.

Visual Studio Code

Jedná se o editor zdrojového kódu, který je vyvíjen společností Microsoft. Velkou výhodou je, že je zcela zdarma a je možné ho rozšířit o mnoho pluginů (včetně pluginu právě pro práci s Dockerem). Výborně se hodí pro rychlou úpravu zdrojového kódu. Limity VSC se začínají projevovat při práci na větších projektech, zejména při vývoji v Javě. VSC má i omezené možnosti debuggování.

Osobně doporučuji mít VSC nainstalované a používat ho pro rychlou úpravu kódu.

Visual Studio Code si můžeme stáhnout na oficiálních stránkách nebo si projít přímo specializovaný kurz.

Eclipse

Je open source vývojová platforma, která je primárně známá pro programování v jazyce Java. Nicméně flexibilní návrh ji umožňuje rozšířit za pomocí pluginů o velké množství programovacích jazyků. Velkou výhodou je, že je taktéž zdarma.

Eclipse si můžeme stáhnout na oficiálních stránkách nebo si projít přímo specializovaný kurz.

IntelliJ IDEA

Je multiplatformní vývojové prostředí, které podporuje mimo Javy například Groovy, Kotlin a jiné. Nutno poznamenat, že IntelliJ IDEA je zdarma pouze ve výukové variantě. Pro instalaci a práci s prostředím doporučuji kurz Pokročilá práce s IntelliJ IDEA. Balík ke stažení IntelliJ IDEA najdeme na oficiálních stránkách jetbrains.

Doporučuji provést instalaci a práci v IntelliJ IDEA. Obrázky z kurzu budou právě z IntelliJ IDEA.

Základní pojmy

Jak jsme si uvedli na začátku, funkce Dockeru je taková, že zabalí aplikaci a její závislosti do virtuálního kontejneru, který lze spustit na jakémkoli počítači se systémem Linux, Windows nebo macOS.

Na začátek si uvedeme výrazy, které nás budou po celou dobu kurzu Dockeru provázet:

  • Dockerfile - textový soubor, který obsahuje příkazy na automatizaci sestavení obrazu
  • Build - proces pro sestavení aplikace
  • image - soubor ke spouštění obrazu
  • run - proces spouštění obrazu
  • container - kontejner (vnitřek obrazu). Je izolován od operačního systému a můžeme ho spustit či zastavit.

Na obrázku níže vidíme, jak spolu všechny výrazy souvisí:

Dockerfile, image a container - Docker

Řekněme si k těmto pojmům trochu více.

Dockerfile

Dockerfile je námi vytvořený soubor, ve kterém píšeme postup, jak se mají vytvářet images (obrazy). Popisujeme zde všechny kroky, které je potřeba vykonat. Zároveň zde můžeme provést i nutná nastavení pro hladký běh naší aplikace.

Pro představu přikládám soubor Dockerfile pro spuštění aplikace v programovacím jazyce Python:

FROM python:3.8-slim-buster

WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip3 install -r requirements.txt

COPY . .

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0"]

Build

Build je proces pro vytvoření obrazu z Dockerfile. Proces se spouští příkazem docker build ., který má několik volitelných argumentů. Ty si probereme v průběhu kurzu.

Více o formátu příkazu build se můžeme dozvědět z oficiální dokumentace.

image

Ze souboru Dockerfile si pomocí procesu build vytvoříme image, což je soubor používaný ke spuštění kódu v kontejneru. Docker image je vytvořený tak, aby se dal "spustit" na jakémkoliv počítači, kde je nainstalovaný program Docker.

Image si můžeme připodobnit k datovému nosiči (například CD, DVD nebo flash disk).

Run

Run je proces, kterým se spustí instance z image. Výhoda Dockeru je, že z jednoho image můžeme spustit prakticky neomezené množství kontejnerů. Proces spouštíme příkazem docker run. V kurzu si ukážeme, jak tento příkaz správně používat a jak nastavovat jednotlivé parametry.

Více o formátu příkazu run si můžeme opět dočíst v oficiální dokumentaci.

Pokud jsme si představili image jako CD-nosič, tak proces Run si můžeme představit jako zasunutí a spuštění CDčka.

container

Kontejnery jsou balíčky softwaru, které obsahují všechny nezbytné prvky pro běh našeho programu v jakémkoli prostředí. Docker kontejner je instancí Docker image ve kterém se spustí nějaký (definovaný) proces. Kontejner má svůj vlastí životní cyklus a může se nacházet v různých stavech. O kontejnerech si povíme více v následujících kapitolách.

Pokud jsme si image představili jako CD nosič, tak container si můžeme přirovnat k mechanice.

A to je na úvod vše 🙂

V další lekci, Docker - Dockerfile, build a Image, si řekneme jak napsat jednoduchý Dockerfile a pomocí procesu build vytvořit nový image.


 

Všechny články v sekci
Docker
Přeskočit článek
(nedoporučujeme)
Docker - Dockerfile, build a Image
Článek pro vás napsal Marek Vondra
Avatar
Uživatelské hodnocení:
146 hlasů
Aktivity