Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

1. diel - Docker teória a inštalácia

Vítam všetkých stredne pokročilých programátorov v kurze o Docker. V tomto on-line kurze si postupne ukážeme, ako tento magický nástroj funguje a ako s ním pracovať. Keďže sa jedná o prierezový kurz, je vhodné na začiatku spomenúť, že sú vyžadované určité vstupné znalosti.

Čo potrebujeme poznať

- základná práca s počítačom je úplná samozrejmosť
  • porozumieť príkazom v cmd (príkazový riadok pre Win) alebo terminalu (príkazový riadok pre Linux/Mac)
  • základy programovania sa tiež budú hodiť
  • znalosť databázy
  • znalosť práce s knižnicami (ako je napr. SpringBoot) pre úspešné vytvorenie projektu

Čo je vlastne Docker?

Docker je virtualizačný nástroj, ktorý umožňuje "zabaliť" aplikáciu do kontajnerov a tú potom spúšťať bez ohľadu na prostredie. Alebo ešte jednoduchšie: Docker môže zabaliť aplikáciu a jej závislosti do virtuálneho kontajnera, ktorý je možné spustiť na akomkoľvek počítači so systémom Linux, Windows alebo macOS. Kontajnery totiž vyriešili zásadný nedostatok plnej virtualizácie.

Kontajnerizácia vs plná virtualizácia

Pri plnej virtualizácii je umožnené vytvárať nové virtuálne stroje. Avšak každý virtuálny stroj (počítačový súbor, ktorý sa chová ako skutočný počítač) čo vznikne, sa chová ako vlastný operačný systém, a tým pádom vznikajú veľké režijné náklady.

Niektoré zdroje uvádza že to môže byť až 20% výkonu servera.

Oproti tomu, kontajnerizácia využíva virtualizáciu jadra operačného systému, potom sú všetky kontajnery spúšťané v jednom operačnom systéme. Vďaka tomu, že kontajner obsahuje len špecifické súbory pre danú aplikáciu, je zaručené zníženie réžie a veľkosti. Čo sú samozrejme vlastnosti, ktoré sa nám hodia.

Docker

Virtualizačný nástroj Docker bol prvýkrát uverejnený v roku 2013 ako open source softvér, čo znamená, že zdrojové kódy sú voľne k dispozícii a všetci môžu prispievať k vývoju tohto nástroja. Celý Docker je napísaný v programovacom jazyku GO.

Tiež je použiteľný na všetkých aktuálne známych a rozšírených platformách (Linux, Win a Mac).

Inštalácia

Nainštalovať si Docker na svojom počítači nie je vôbec náročná operácia. Zároveň je veľmi podobná na väčšine operačných systémov. Spoločne sa pozrieme na inštaláciu na Mac a Windows.

Mac prostredie

Najskôr si stiahnime si inštalačný súbor na stránkach docker-mac.
Docker

Vyberieme si zodpovedajúci inštalačný súbor, a po kliknutí dôjde k automatickému stiahnutiu. Primárne sa všetky súbory sťahujú do zložky Downloads. Pokiaľ je to tak ui Vás, mali by ste v nej nájsť súbor Docker.dmg.

Inštalácia prebieha ako pri klasickej aplikácii, kde klikáme na Next kým sa všetko nenainštaluje 😊.

Docker

V prípade, že všetko dopadlo v poriadku, uvidíte na ploche známu ikonu Dockera.

Windows prostredie

Požiadavky na inštaláciu

Pri inštalácii na operačnom systéme Windows je potrebné mať na zreteli určité predpoklady:
  • procesor podporujúci SLAT (Second Level Adress Translation)
  • povolenú virtualizáciu
  • mať nainštalovaný hyper-V a/alebo subsystém Linux (pokiaľ nebudete mať niečo z toho nainštalované, Docker Vás na to pri spustení programu upozorní, a následne sa vypne)

Najskôr si stiahneme inštalačný súbor na stránkach docker-win.

Docker

Po kliknutí dôjde k automatickému stiahnutiu. Primárne sa všetky súbory sťahujú do zložky Downloads. Ak je to tak ui Vás, mali by ste v nej nájsť súbor Docker Desktop Installer.exe.

Inštalácia prebieha ako pri klasickej aplikácii, kde klikáme na Next kým sa všetko nenainštaluje. V prípade, že všetko dopadlo v poriadku, uvidíte na ploche známu ikonu Dockera.

Overenie inštalácie

Predpokladajme, že sa nám podľa návodu vyššie podarilo Docker nainštalovať. Ako vždy po inštalácii je vhodné si inštaláciu overiť. Sme vývojári, a preto budeme primárne používať terminál (resp. príkazový riadok pre Win). Otvoríme si terminál a napíše príkaz docker version.

Pokiaľ všetko prebehlo v poriadku uvidíte podrobné informácie vo výpise:

docker version - Docker

Príkaz version má jeden voliteľný parameter --format (skrátene -f). Pokiaľ chceme napríklad zobraziť len verziu klienta, je možné napísať docker version --format '{{.Client.Version}}'

Inštalácia IDE

Na písanie Docker súborov a prácu s Dockerom nám stačí úplne obyčajný textový editor. Avšak odporúčam si nainštalovať nejaké vývojové prostredie. Osobne môžem odporučiť nasledujúce vývojové prostredia:

Visual Studio Code

Ide o editor zdrojového kódu, ktorý je vyvíjaný spoločnosťou Microsoft. Veľkou výhodou je, že je úplne zadarmo a je možné ho rozšíriť o mnoho pluginov (vrátane pluginu práve pre prácu s Dockerom). Výborne sa hodí pre rýchlu úpravu zdrojového kódu. Limity VSC sa začínajú prejavovať pri práci na väčších projektoch, najmä pri vývoji v Jave. VSC má aj obmedzené možnosti debugovania.

Osobne odporúčam mať VSC nainštalované a používať ho na rýchlu úpravu kódu.

Pokiaľ si chcete VSC stiahnuť a inštalovať, môžete tak urobiť tu z oficiálnych stránok.

Eclipse

Je open source vývojová platforma, ktorá je primárne známa pre programovanie v jazyku Java. Avšak flexibilný návrh ju umožňuje rozšíriť pomocou pluginov o veľké množstvo programovacích jazykov. Veľkou výhodou je, že je tiež zadarmo.

Pokiaľ si chcete Eclipse stiahnuť a inštalovať, tu je opäť odkaz na oficiálne stránky.

IntelliJ IDEA

Je multiplatformné vývojové prostredie, ktoré podporuje mimo Javy napríklad Groovy, Kotlin a iné. Nutné poznamenať, že IntelliJ IDEA je zadarmo iba vo výukovom variante. Pre inštaláciu a ďalšie informácie existuje na ITNetwork návod: https://www.itnetwork.cz/…ho-prostredi.

Odporúčam vykonať inštaláciu IntelliJ IDEA. Pokiaľ budú v kurze obrázky, tak práve z IntelliJ IDEA.

Názvoslovie - základné pojmy

Ako sme si uviedli na začiatku, funkcia Dockeru je taká, že zabalí aplikáciu a jej závislosti do virtuálneho kontajnera, ktorý je možné spustiť na akomkoľvek počítači so systémom Linux, Windows alebo macOS.

Na začiatok si uvedieme výrazy, ktoré nás budú po celú dobu kurzu Dockera sprevádzať:

  • Dockerfile (súbor)
  • build (proces vytvorenia)
  • image (obraz - súbor na spúšťanie)
  • run (proces spúšťania obrazu)
  • container (kontajner)

Na obrázku nižšie vidíme, ako spolu všetky výrazy súvisia.

Dockerfile, imidž a container - Docker

Povedzme si k týmto pojmom trochu viac.

Dockerfile

Dockerfile je nami vytvorený súbor, v ktorom píšeme postup, ako sa majú vytvárať imidž. Popisujeme tu všetky kroky, ktoré treba vykonať. Zároveň tu môžeme urobiť aj potrebné nastavenia pre hladký beh našej aplikácie.

Pre predstavu predkladám Dockerfile pre spustenie aplikácie v programovacom jazyku 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 pre vytvorenie imidžu Dockerfilu. Proces sa spúšťa príkazom docker build ., Ktorý má niekoľko voliteľných argumentov. Tie si preberieme v priebehu kurzu.

Pokiaľ by vás viac zaujímal formát príkazu build, môžete sa pozrieť do oficiálnej dokumentácie

image

Z Dockerfilu si pomocou procesu build vytvoríme Image, čo je súbor používaný na spustenie kódu v kontajneri. Docker image je vytvorený tak, aby sa dal "spustiť" na akomkoľvek počítači, kde je nainštalovaný program Docker.

Image si môžeme pripodobniť k dátovému nosiču (napríklad CD, DVD alebo flash disk).

Run

Run je proces, ktorým sa spustí inštancia z image. Výhoda Dockeru je, že z jedného imidžu môžeme spustiť prakticky neobmedzené množstvo kontajnerov. Proces spúšťame príkazom docker run. V kurze si ukážeme, ako tento príkaz správne používať a ako nastavovať jednotlivé parametre.

Pokiaľ by vás viac zaujímal formát príkazu run, môžete sa opäť pozrieť do oficiálnej dokumentácie

Ak sme si predstavili imidž ako CD-nosič, tak proces run si môžeme predstaviť ako zasunutie a spustenie CDčka.

container

Napokon, kontajnery sú balíčky softvéru, ktoré obsahujú všetky nevyhnutné prvky pre beh nášho programu v akomkoľvek prostredí. Docker kontajner je inštanciou Docker image v ktorom sa spustí nejaký (definovaný) proces. Kontajner má svoj vlasť životný cyklus a môže sa nachádzať v rôznych stavoch. O kontajneroch si povieme viac v nasledujúcich kapitolách.

Ak sme si imidž predstavili ako CD nosič, tak container si môžeme prirovnať k mechanike.

A to je na úvod všetko 🙂

V ďalšej lekcii, Dockerfile, build a Image , si povieme ako napísať jednoduchý Dockerfile a pomocou procesu build vytvoriť nový imidž.


 

Všetky články v sekcii
Docker
Preskočiť článok
(neodporúčame)
Dockerfile, build a Image
Článok pre vás napísal Marek Vondra
Avatar
Užívateľské hodnotenie:
6 hlasov
Aktivity