1. Báza znalostí
  2. Cloud a servery
  3. Kontajnery
  4. Docker
  5. Docker – 1. Predstavenie, inštalácia a základné operácie

Docker – 1. Predstavenie, inštalácia a základné operácie

Docker je sada produktov a nástrojov typu platforma-ako-služba (PaaS), ktoré využívajú virtualizáciu na úrovni operačného systému na dodávanie softvéru v balíkoch nazývaných kontajnery.

Ide o softvér s otvoreným zdrojovým kódom. Niektoré časti sú ponúkané ako komerčná služba.  Medzi jeho hlavné výhody patrí, že nie je dôležité na akom operačnom systéme a s akými nástrojmi aplikáciu vyvíjate. Docker pomocou izolovaných kontajnerov zabezpečuje jednotné vývojové prostredie pre Windows, MacOS aj Linux. 

Tip: Docker beží výborne vo WebSupport VPS. Vyskúšajte prémiový virtuálny server ešte dnes.

Príklad: Vyvíjame aplikáciu v jazyku PHP pod operačným systémom Ubuntu 20.04, na ktorom beží LEMP. Jeden z vývojárov ale používa Windows, iný zase MacOS. Nemusia si však inštalovať ani virtualizovať kompletný operačný systém Ubuntu 20.04 a nastavovať LEMP, pretože Docker má predpripravený obraz (image) presne pre potreby spomínanej aplikácie.

Docker výrazne uľahčuje a automatizuje vývoj softvéru, jeho distribúciu a prevádzku.

Za hlavným vývojom stojí spoločnosť Docker Inc. ktorú založili Solomon Hykes a Sebastien Pahl počas Y Combinator Summer 2010, čo je startup inkubátor a spustili ju v roku 2011. Hykes začal Docker projekt vo Francúzsku ako interný projekt pre dotCloud, čo bola platform-as-a-service spoločnosť.

Docker bol verjenosti predstavený v Santa Clara na konferencii PyCon v roku 2013. Ako open-source bol uvoľnený v marci 2013. V tom čase používal LXC, no neskôr prešiel vo verzii 0.9 na vlastné behové prostredie napísané v jazyku Go (Golang). V roku 2017 Docker vytvoril projekt Moby, ktorý slúži na výskum a testovanie nových funkcii, zároveň ide o upstream pre Docker.

Základné pojmy

Koncept projektu Docker je postavený na niekoľkých pilieroch, ktoré si tu krátko predstavíme a podrobnejšie preskúmame v ďalších častiach tohto seriálu.

Obraz (Image)

Ide o šablónu, ktorá je určená iba na čítanie a je uložená v registri ako napríklad hub.docker.com. Podľa tejto šablóny Docker vytvorí kontajner alebo viacero kontajnerov. Bližšia špecifikácia, podľa ktorej má Docker z obrazu vytvoriť kontajner, sa zapisuje do textového súboru s názvom Dockerfile.

Dockerfile

Ide o textový súbor s názvom Dockerfile, do ktorého píšeme návod a príkazy potrebné na vytvorenie kontajneru. Takto napríklad necháme vytvoriť kontajner, ktorý z registra hub.docker.com stiahne a spustí operačný systém Ubuntu v najnovšej verzii (prvý riadok) a následne v ňom aktualizuje všetok softvér a nainštaluje nástroje potrebné na zostavovanie ostatných nástrojov (druhý riadok):

FROM ubuntu:latest
RUN apt-get -y update && apt-get -y upgrade && apt-get install -y build-essential

V priečinku, kde sa nachádza textový súbor Dockerfile, teraz v termináli spustíme kontajner z obrazu (image) ubuntu.latest:

docker run -i -t ubuntu /bin/bash

Takto spustený kontajner s názvom ubuntu v termináli zobrazí bash a môžeme začať písať príkazy do práve načítaného operačného systém Ubuntu.

V produkcii odporúčme nepoužívať obrazy s označením :latest, ale konkrétne verzie.

Kontajner (Container)

Ide o spustený obraz (image) – napríklad ten, ktorý sme vyššie spustili príkazom docker run -i -t ubuntu /bin/bash. Kontajnery sú úplne alebo čiastočne izolované od hostiteľského operačného systému a môžeme ich vytvoriť, spustiť, zastaviť, presunúť alebo zmazať.

Obsah (Volume)

Kontajnery sú svojim konceptom bezstavové a neperzistetné. To znamená, že o ich dáta prichádzame po ich zrušení. V reálnom použití ale často potrebujeme s dátami na úrovni adresárov a súborov pracovať. Obsah (Volume) umožnuje dáta z hostiteľského systému pripojiť ku kontajneru. Je to princíp dosť podobný mount v Linuxových systémoch.

Sieť (Network)

Sieť v docker kontajneroch slúži na jeho prepojenie s hostiteľským systémom. Napríklad potrebujeme komunikáciu webového servera Nginx otvoriť na porte číslo 80 v kontajneri a prepojiť ju na port číslo 8080 na hostiteľskom počítači.

Docker umožňuje vytváranie sieti medzi konkrétnymi kontajnermi, čo má výhodu pri komplexnejších systémoch.

Docker Compose

Ide o nástroj, vďaka ktorému môžeme výrazne zjednodušiť vytváranie a nastavenie komplexného prostredia z viacerých kontajnerov, sieti a dát. Nastavenia pre nástroj Compose ukladáme do textového súboru s názvom docker-compose.yml.

Docker Swarm

Nástroj, vďaka ktorému môžeme spravovať viacero inštalácií projektu Docker (nody). Zabezpečuje orchestráciu takéhoto prostredia.

Kedy a prečo Docker používať

Existuje niekoľko vlastností projektu Docker, vďaka ktorým je výhodné používať ho.

Reprodukovateľnosť a práca v tíme

Na každom operačnom systéme, ktorý má nainštalovaný Docker, je možné spustiť obraz (image) a vytvoriť tak kontajner s rovnakým prostredím. Windows, MacOS alebo Linux – nie je dôležité, ktorý operačný systém používame. Ak teda vo vývojárskom tíme členovia používajú rôzne operačné systémy, nemusia si nainštalovať alebo plne virtualizovať iný operačný systém. Stačí nainštalovať Docker a spustiť kontajner s požadovaným operačným systémom a nástrojmi.

Izolácia a rýchlosť

Inštalácia a nastavenia akýchkoľvek nástrojov v kontajneri nijako neovplyvnia hosťovský operačný systém ani iný kontajner. To znamená, že na jednom serveri môžeme mať spustený v jednom kontajneri webový server a v druhom databázový server, pričom sa nemusíme starať o prípadné závislosti a konflikty z nich vyplývajúce. Takto môžeme rýchlo nastaviť vývojové prostredie s požadovanými nástrojmi a skúšať rôzne alternatívy bez ohrozenia stability hosťovského operačného systému.

Bezpečnosť

Izolácia jednotlivých komponentov môže priniesť zvýšenie bezpečnosti. Zároveň ide o spôsob ako sa izolovane dajú prevádzkovať staršie aplikácie napríklad už bez dostupnej technickej podpory.

Kedy Docker radšej nepoužiť

Každá technológia je dobrá v niektorých prípadoch a v iných zase môže byť výhodnejšie siahnuť po inom riešení. Toto sú prípady, kedy sa Docker neoplatí použiť.

Komplikovanosť a rýchlosť

Ak je aplikácia príliš komplikovaná a potrebujeme, aby bola čo najrýchlejšia, Docker nie je dobrý nápad. Pridáva totiž ďalšie vrstvy, ktoré stoja medzi hosťovským operačným systémom a aplikáciou, čo prirodzene celkovú rýchlosť aplikácie spomaľuje. Jednoducho, ak aplikácia potrebuje viac zdrojov a je náročné ju horizontálne škálovať.

Aplikácia s grafickým používateľským rozhraním (GUI)

Ak vyvíjame aplikáciu, ktorá sa obsluhuje v grafickom prostredí myšou (teda nie výhradne cez príkazový riadok), Docker nie je vhodný nástroj. V takomto prípade je lepšie použiť počítač s požadovaným operačným systémom alebo virtualizovať kompletný operačný systém.

Inštalujeme Docker

Ukážeme si inštaláciu projektu Docker na operačnom systéme Ubuntu 20.04. Inštalácia pre operačné systémy Windows a MacOS prebieha v grafickom prostredí Docker Desktop, ktorý nás prevedie celým procesom inštalácie. Príkazy projektu Docker však budú fungovať na každom operačnom systéme rovnako.

V prvom rade je potrebné zabezpečiť aktuálnosť všetkých balíkov. Nainštalujeme teda všetok updatovaný softvér pomocou dvoch príkazov v jednej dávke:

sudo apt update && sudo apt upgrade

Ak systém nájde aktualizovateľné balíčky, takto sa opýta, či ich chcete začať inštalovať:

Do you want to continue? [Y/n]

Stlačíme kláves y ak chceme začať aktualizačný proces alebo kláves n, ak aktualizovať nechceme. Následne stlačíme kláves Enter.

Väčšina Linuxových distribúcií ma vo svojich repozitároch Docker. Pokiaľ chcete pracovať s aktuálnymi verziami odporúčame ísť cestou oficiálneho skriptu.

Na inštaláciu projektu Docker použijeme oficiálny skript, ktorý inštaláciu v termináli zjednoduší na 2 príkazy:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

Odteraz môžeme spúšťať kontajnery a využívať všetky ostatné nástroje projektu Docker.

Ak by ste chceli používať Docker ako používateľ bez root oprávnenia, mali by ste zvážiť pridanie svojho používateľa do skupiny „docker“ napríklad ako:

sudo usermod -aG docker užívateľ

Niekedy je nutné sa ako používateľ odhlásiť a následne zase prihlásiť.

Zhrnutie

Zadefinovali, čo je Docker, kedy je vhodné použiť ho a kedy radšej nie. Nainštalovali sme Docker a ukázali sme si, ako v ňom jednoducho a rýchlo spustiť prostredie Linuxovej distribúcie Ubuntu.

Aktualizované 6. novembra 2020

Bol pre vás tento návod nápomocný?

Mohlo by vás tiež zaujímať:

Spýtajte sa nás, radi poradíme
Po - Ne 8:00-22:00
Kontaktovať podporu