1. Home
  2. Cloud a servery
  3. Kontejnery
  4. Docker
  5. Docker – 1. Představení, instalace a základní operace

Docker – 1. Představení, instalace a základní operace

Docker je sada produktů a nástrojů typu platforma-jako-služba (PaaS), které využívají virtualizaci na úrovni operačního systému na dodávání softwaru v balících nazývaných kontejnery.

Jde o software s otevřeným zdrojovým kódem. Některé části jsou nabízené jako komerční služba.  Mezi jeho hlavní výhody patří, že není důležité na jakém operačním systému a s jakými nástroji aplikaci vyvíjíte. Docker pomocí izolovaných kontejnerů zabezpečuje jednotné vývojové prostředí pro Windows, MacOS i Linux. 

Příklad: Vyvíjíme aplikaci v jazyku PHP pod operačním systémem Ubuntu 20.04, na kterém běží LEMP. Jeden z vývojářů ale používá Windows, jiný zase MacOS. Nemusí si však instalovat ani virtualizovat kompletní operační systém Ubuntu 20.04 a nastavovat LEMP, protože Docker má předpřipravený obraz (image) přesně pro potřeby zmíněné aplikace.

Docker výrazně ulehčuje a automatizuje vývoj softwaru, jeho distribuci a provoz.

Za hlavním vývojem stojí společnost Docker Inc., kterou založili Solomon Hykes a Sebastien Pahl během Y Combinator Summer 2010, což je startup inkubátor a spustili ji v roce 2011. Hykes začal Docker projekt ve Francii jako interní projekt pro dotCloud, což byla platform-as-a-service společnost.

Docker byl veřejnosti představený v Santa Clara na konferenci PyCon v roku 2013. Jako open-source bol uvolněný v březnu 2013. V tom čase používal LXC, ale později přešel ve verzi 0.9 na vlastní běhové prostředí napsané v jazyku Go (Golang). V roce 2017 Docker vytvořil projekt Moby, který slouží na výzkum a testování nových funkcí, zároveň jde o upstream pro Docker.

Základní pojmy

Koncept projektu Docker je postavený na několika pilířích, které si zde krátce představíme a podrobněji prozkoumáme v dalších částech tohoto seriálu.

Obraz (Image)

Jde o šablonu, která je určená pouze pro čtení a je uložená v registru jako například hub.docker.com. Podle této šablony Docker vytvoří kontejner nebo vícero kontejnerů. Bližší specifikace, podle které má Docker z obrazu vytvořit kontejner, se zapisuje do textového souboru s názvem Dockerfile.

Dockerfile

Jde o textový soubor s názvem Dockerfile, do kterého píšeme návod a příkazy potřebné na vytvoření kontejneru. Takto například necháme vytvořit kontejner, který z registru hub.docker.com stáhne a spustí operační systém Ubuntu v nejnovější verzi (první řádek) a následně v něm aktualizuje všechen software a nainstaluje nástroje potřebné na sestavování ostatních nástrojů (druhý řádek):

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

Ve složce, kde se nachází textový soubor Dockerfile, teď v terminálu spustíme kontejner z obrazu (image) ubuntu.latest:

docker run -i -t ubuntu /bin/bash

Takto spuštěný kontejner s názvem ubuntu v terminálu zobrazí bash a můžeme začít psát příkazy do právě načítaného operačního systému Ubuntu.

V produkci doporučujeme nepoužívat obrazy s označením :latest, ale konkrétní verze.

Kontejner (Container)

Jde o spuštěný obraz (image) – například ten, který jsme výše spustili příkazem docker run -i -t ubuntu /bin/bash. Kontejnery jsou úplně nebo částečně izolované od hostitelského operačního systému a můžeme je vytvořit, spustit, zastavit, přesunout nebo smazat.

Obsah (Volume)

Kontejnery jsou svým konceptem bezstavové a neperzistetní. To znamená, že o jejich data přicházíme po jejich zrušení. V reálném použití ale často potřebujeme s daty na úrovni adresářů a souborů pracovat. Obsah (Volume) umožnuje data z hostitelského systému připojit ke kontejneru. Je to princip dost podobný mount v Linuxových systémech.

Síť (Network)

Síť v docker kontejnerech slouží na jeho propojení s hostitelským systémem. Například potřebujeme komunikaci webového serveru Nginx otevřít na portu číslo 80 v kontejneru a propojit ji na port číslo 8080 na hostitelském počítači.

Docker umožňuje vytváření sítí mezi konkrétními kontejnery, což má výhodu u komplexnějších systémů.

Docker Compose

Jde o nástroj, díky kterému můžeme výrazně zjednodušit vytváření a nastavení komplexního prostředí z vícerých kontejnerů, sítí a dat. Nastavení pro nástroj Compose ukládáme do textového souboru s názvem docker-compose.yml.

Docker Swarm

Nástroj, díky kterému můžeme spravovat vícero instalací projektu Docker (nody). Zabezpečuje orchestraci takového prostředí.

Kdy a proč Docker používat

Existuje několik vlastností projektu Docker, díky kterým je výhodné ho používat.

Reprodukovatelnost a práce v týmu

Na každém operačním systému, který má nainstalovaný Docker, je možné spustit obraz (image) a vytvořit tak kontejner se stejným prostředím. Windows, MacOS nebo Linux – není důležité, který operační systém používáme. Pokud tedy ve vývojářském týme členové používají různé operační systémy, nemusí si nainstalovat nebo plně virtualizovat jiný operační systém. Stačí nainstalovat Docker a spustit kontejner s požadovaným operačním systémem a nástroji.

Izolace a rychlost

Instalace a nastavení jakýchkoliv nástrojů v kontejneru nijak nevlivní hostitelský operační systém ani jiný kontejner. To znamená, že na jednom serveru můžeme mít spuštěný v jednom kontejneru webový server a v druhém databázový server, přičemž se nemusíme starat o případné závislosti a konflikty z nich vyplývající. Takto můžeme rychle nastavit vývojové prostředí s požadovanými nástroji a zkoušet různé alternativy bez ohrožení stability hostitelského operačního systému.

Bezpečnost

Izolace jednotlivých komponentů může přinést zvýšení bezpečnosti. Zároveň jde o způsob jak se izolovaně dají provozovat starší aplikace například už bez dostupné technické podpory.

Kdy Docker radši nepoužít

Každá technologie je dobrá v některých případech a v jiných zase může být výhodnější sáhnout po jiném řešení. Toto jsou případy, kdy se Docker nevyplatí využít.

Komplikovanost a rychlost

Pokud je aplikace příliš komplikovaná a potřebujeme, aby byla co nejrychlejší, Docker není dobrý nápad. Přidává totiž další vrstvy, které stojí mezi hostitelským operačním systémem a aplikací, což přirozeně celkovou rychlost aplikace zpomaluje. Jednoduše, pokud aplikace potřebuje více zdrojů a je náročné ji horizontálně škálovat.

Aplikace s grafickým uživatelským rozhraním (GUI)

Pokud vyvíjíme aplikaci, která se obsluhuje v grafickém prostředí myší (tedy ne výhradně přes příkazový řádek), Docker není vhodný nástroj. V takovém případě je lepší použít počítač s požadovaným operačním systémem nebo virtualizovat kompletní operační systém.

Instalujeme Docker

Ukážeme si instalaci projektu Docker na operačním systému Ubuntu 20.04. Instalace pro operační systémy Windows a MacOS probíhá v grafickém prostředí Docker Desktop, který nás provede celým procesem instalace. Příkazy projektu Docker však budou fungovat na každém operačním systému stejně.

V první řadě je potřeba zabezpečit aktuálnost všech balíků. Nainstalujeme tedy všechen updatovaný software pomocí dvou příkazů v jedné dávce:

sudo apt update && sudo apt upgrade

Pokud systém najde aktualizovatelné balíčky, takto se zeptá, jestli je chcete začít instalovat:

Do you want to continue? [Y/n]

Stlačíme klávesu y když chceme začít aktualizační proces nebo kláves n, pokud aktualizovat nechceme. Následně stlačíme klávesu Enter.

Většina Linuxových distribucí má ve svých repozitářích Docker. Pokud chcete pracovat s aktuálními verzemi, doporučujeme jít cestou oficiálního skriptu.

Na instalaci projektu Docker použijeme oficiální skript, který instalaci v terminálu zjednoduší na 2 příkazy:

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

Odteď můžeme spouštět kontejnery a využívat všechny ostatní nástroje projektu Docker.

Pokud byste chtěli používat Docker jako uživatel bez root oprávnění, měli byste zvážit přidání svého uživatele do skupiny „docker“ například jako:

sudo usermod -aG docker uživatel

Někdy je nutné se jako uživatel odhlásit a následně zase přihlásit.

Shrnutí

Nadefinovali jsme si, co je Docker, kdy je vhodné použít ho a kdy radši ne. Nainstalovali jsme Docker a ukázali jsme si, jak v něm jednoduše a rychle spustit prostředí Linuxové distribuce Ubuntu.

Aktualizováno: 20 září, 2022

Byl tento článek užitečný?

Related Articles

Zákaznická podpora
24 hodin denně, 7 dní v týdnu
KONTAKTOVAT PODPORU