Virtualizácia vs. kontajnerizácia.

Nevýhody virtualizácie

  • Nižšia efektivita
  • Ťažší manažment zdrojov. Operačný systém nevie dynamicky prideľovať prostriedky viacerým virtuálnym strojom. - Dáta a aplikácia nie sú oddelené.

Kontajnerizácia

je virtualizácia na úrovni operačného systému.

Aplikačný kontajner

Vrstva hostiteľského operačného systému ktorá vytvára "klietku" v ktorej beží jeden alebo viac procesov.

  • Aplikácia v kontajneri využíva iba jadro Host OS.
  • všetko ostatné je virtualizované tenkou vrstvou.

Aplikačný kontajner

       +---------+
       | HOST OS |
       +---------+
           ^
           |
+-----------------------+
| Application Container |
+-----------------------+
           ^
           |
  +------------------+
  | GUEST OS and APP |
  +------------------+

Docker

Babydocker

Docker

Virtualizačná vrstva medzi aplikáciou a operačným systémom

Aplikácia využíva jadro hostiteľského OS

  • Docker podporuje "software defined networking".

Docker

Umožňuje rýchlo spúšťať aplikáciu na ľubovoľnom uzle bez toho aby ste museli riešiť inštaláciu a závislosti.

Docker Komponenty

  • docker client
  • docker démon
  • image registry
registr

Docker Komponenty

  +----------+
  | registry |   Docker Hub
  +----------+
       ||         (image)
  +----------+
  |   démon  |   Host machine
  +----------+
       ||         (protocol)
  +------------+
  | cli client |   Host machine
  +------------+

Docker client

Príkaz 'docker' v príkazovom riadku.

  • beží na ľubovoľnom OS.
  • pomocou vlastného protokolu komunikuje s docker démonom.

Docker démon

  • (väčšinou) beží na Linux OS alebo na Docker Machine.
  • stará sa o bežiace kontajnery.

Obraz kontajnera

  • Súborový systém s aplikáciou, knižnicami aj OS.
  • časť "inštalačného balíčka" pre cloud s práve jednou aplikáciou.

Obraz

Obraz

Kontajner

Bežiaca aplikácia.

Kontajner

Obraz
       +--------+
       | Image  |
       +--------+
           |  Run
           v
      +-----------+
      | Container |
      +-----------+

Kontajner beží vo virtuálnom prostredí

Vidí virtuálne zariadenia

  • Procesor
  • Sieť
  • Súborový systém
mapping

Virtuálna sieť

Kontajner vidí "svoju" sieť.

Virtuálny súborový systém

  • Kontajner vidí svoj vlastný súborový systém ktorý sa skladá z vrstiev.
  • Vrstvenie je implementované pomocou špeciálneho súborového systému.
  • OverlayFS

Vrstvy virtuálneho súborového systému

  • Vrstvy sú nemenné.
  • Vrstvy sa dajú zdieľať medzi obrazmi.
  • Nový zápis znamená novú vrstvu.
  • Vrstvenie sa dá obísť pomocou mapovania.

Vrstvy virtuálneho súborového systému

       +-----------------+
       | Operačný systém |
       +-----------------+
           | inštalácia
      +-----------+
      | Aplikácia |---------------+
      +-----------+               |
           |  mapovanie           |
      +----------------+  +----------------+
      | Stav aplikácie |  | Dočasné súbory |
      +----------------+  +----------------+

Oddelenie dát od aplikácie

  • Aplikácia nemá svoj stav.
  • Dáta môžu byť uložené kdekoľvek.

Spustenie Docker kontajnera

docker run nginx

na pozadí

Interaktívne spustenie

docker run -it --rm nginx

s konzolou

Spustenie s mapovaním siete a zväzkov

docker run  -p 80:80 -v /var/www:/var/www nginx

Mapovanie medzi reálnym a virtuálnym adresárom.

Vytvorenie obrazu

Ako upraviť aplikáciu aby bežala na cloude?

  • Oddelenie aplikácie, dát, siete a konfigurácie.
  • Zapíšeme postup pre inštaláciu.

Analýza závislosti aplikácie

Každá aplikácia má svoje závislosti na nižších vrstvách:

  • na knižnici,
  • na OS,
  • na procesore.

Zmena HW, LIB alebo OS si vyžaduje zmenu aplikácie.

Príklad Dockerfile

Dockerfile sú inštrukcie ako zostaviť obraz.

FROM dockerfile/ubuntu
RUN \
add-apt-repository -y ppa:nginx/stable && \
apt-get update && \
apt-get install -y nginx && \
rm -rf /var/lib/apt/lists/* && \
echo "\ndaemon off;" >> /etc/nginx/nginx.conf && \
chown -R www-data:www-data /var/lib/nginx
WORKDIR /etc/nginx
CMD ["nginx"] # Define default command.

zdroj

Zdieľanie obrazu

Centrálny repozitár Dockerhub

Možné problémy pri vytváraní obrazu

  • Závislosť na Docker Hub.
  • Časté využívanie neoverených obrazov.
  • docker démon beží ako 'root'.

Nevýhody Docker

  • Súbory je potrebné manažovať osobitne.
  • Manažment viacerých Docker kontajnerov - Kubernetes, Docker Swarm/Compose.

Docker v klaude

  • Na virtuálnom stroji viete ľahko nainštalovať Docker a nasadiť viacero kontajnerov.
  • Azure App Service.
  • Amazon EC2 Container Service.
  • Google Cloud Run.

Záver - Docker...

  • je virtualizačná vrstva medzi jadrom a aplikáciou.
  • umožňuje ľahko spustiť aplikáciu v cloude.
  • zjednodušuje inštaláciu.
  • Existuje viac kompatibilných systémov pre konajnerizáciu.
    • podman, crio
Reload?