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.
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.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 😊.
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.
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íkazdocker version
.
Pokiaľ všetko prebehlo v poriadku uvidíte podrobné informácie vo výpise:
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.
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íkazomdocker 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íkazomdocker 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ž.