V našem tutoriálu k Dockeru vám představíme virtualizační platformu Docker a ukážeme vám, jak používat Docker ve vašem systému Ubuntu 22.04 pomocí snadno srozumitelných pokynů.

Struktura a vlastnosti Dockeru

„Vytvořte, odešlete a spusťte jakoukoli aplikaci kdekoli“ – to je motto společnosti Docker. Tato open-source kontejnerová platforma nabízí flexibilní alternativu s nízkými nároky na zdroje pro emulaci hardwarových komponent založených na virtuálních strojích (VM).

Zatímco tradiční virtualizace hardwaru je založena na spouštění více hostitelských systémů na společném hostitelském systému, aplikace Docker jsou spouštěny jako izolované procesy na stejném systému s pomocí kontejnerů. Tomuto procesu se říká virtualizace založená na kontejnerech, také označovaná jako virtualizace na úrovni operačního systému.

Obrázek: Virtual machines and software containers in comparison
While each virtual machine launches its own operating system, Docker containers share the core of the host system

Velkou výhodou virtualizace založené na kontejnerech je to, že aplikace s různými požadavky mohou běžet izolovaně od sebe navzájem, aniž by vyžadovaly režii samostatného hostitelského systému. Navíc lze pomocí kontejnerů nasazovat aplikace napříč platformami a v různých infrastrukturách, aniž by bylo nutné je přizpůsobovat hardwarovým nebo softwarovým konfiguracím hostitelského systému.

Docker je nejoblíbenější softwarový projekt, který uživatelům poskytuje virtualizační technologii založenou na kontejnerech. Tato open-source platforma je založena na třech základních komponentách. K spuštění kontejnerů potřebují uživatelé pouze engine Docker a speciální obrazy Docker, které lze získat prostřednictvím Docker hub nebo vytvořit sami.

Obrazy Dockeru

Podobně jako virtuální stroje jsou i kontejnery Docker založeny na obrazech Docker. Obraz je šablona pouze pro čtení, která obsahuje všechny pokyny, které engine Docker potřebuje k vytvoření kontejneru. Obraz Docker je popsán jako přenosný obraz kontejneru ve formě textového souboru, nazývaného také Dockerfile. Pokud má být kontejner spuštěn v systému, nejprve se načte balíček s příslušným obrazem, pokud neexistuje lokálně. Načtený obraz poskytuje potřebný souborový systém včetně všech parametrů pro běh. Kontejner lze považovat za spuštěný proces obrazu.

Docker hub

Docker hub je cloudový registr pro softwarová úložiště, druh knihovny pro obrazy Docker. Online služba je rozdělena na veřejnou a soukromou část. Veřejná část nabízí uživatelům možnost nahrát vlastní vyvinuté obrazy a sdílet je s komunitou. Zde je k dispozici řada oficiálních obrazů od vývojářského týmu Docker a zavedených open-source projektů. Obrazy nahrané do soukromé části registru nejsou veřejně přístupné, a lze je tedy sdílet například v rámci interního kruhu společnosti nebo s přáteli či známými. Docker hub je přístupný na adrese hub.docker.com.

Engine Docker

Jádrem projektu Docker je Docker engine. Jedná se o open-source klient-serverovou aplikaci, která je v aktuální verzi dostupná všem uživatelům na všech zavedených platformách.

Základní architektura enginu Docker je rozdělena do tří komponent: démon se serverovými funkcemi, programovací rozhraní (API) založené na programovacím paradigmatu REST (Representational State Transfer) a terminál operačního systému (rozhraní příkazového řádku, CLI) jako uživatelské rozhraní (klient).

  • Docker daemon: Jako server pro Docker engine se používá proces daemon. Docker daemon běží na pozadí hostitelského systému a slouží k centrálnímu řízení Docker engine. Tato funkce vytváří a spravuje všechny obrazy, kontejnery nebo sítě.
  • REST-API: REST-API specifikuje sadu rozhraní, která umožňují jiným programům komunikovat s démonem Docker a dávat mu pokyny. Jedním z těchto programů je terminál operačního systému.
  • Terminál: Jako klientský program používá Docker terminál operačního systému. Ten je integrován s démonem Dockeru prostřednictvím REST-API a umožňuje uživatelům ovládat jej pomocí skriptů nebo uživatelských vstupů.
Tip

V roce 2017 byl engine Docker přejmenován na Docker Community Edition (zkráceně Docker CE), ale oficiální dokumentace a repozitáře Dockeru většinou stále používají starý název. Kromě Docker CE existuje také Docker Enterprise Edition (Docker EE), který má některé prémiové funkce. Není však zdarma a je vhodnější pro podniky.

Pomocí příkazů Docker lze spouštět, zastavovat a spravovat softwarové kontejnery uživatelů přímo z terminálu. Daemon je adresován pomocí příkazu docker a instrukcí jako build, pull nebo run. Klient a server mohou být na stejném systému. Uživatelé mají také možnost přistupovat k démonu Docker na jiném systému. V závislosti na typu navázaného připojení probíhá komunikace mezi klientem a serverem přes REST-API, přes UNIX sokety nebo přes síťové rozhraní.

Následující grafika ilustruje vzájemné působení jednotlivých komponent Dockeru na příkladu příkazů docker build, docker pull a docker run:

Obrázek: Schematic representation of the Docker architecture
'The Docker architecture is based on the cooperation of the client (terminal'), server (Docker daemon) a registr (Docker hub).“

Příkaz docker build dává démonu Docker pokyn k vytvoření obrazu (tečkovaná čára). K tomu musí být k dispozici odpovídající soubor Dockerfile. Pokud se obraz nemá vytvářet, ale načíst z úložiště v Docker Hubu, použije se příkaz docker pull (čárkovaná čára). Pokud je démon Docker prostřednictvím docker run instruován ke spuštění kontejneru, program na pozadí zkontroluje, zda je odpovídající obraz kontejneru lokálně k dispozici. Pokud ano, kontejner se spustí (plná čára). Pokud démon obraz nenajde, automaticky zahájí stažení z úložiště.

Práce s Dockerem

Nyní je čas seznámit se s aplikacemi kontejnerové platformy. Pokud jste ještě nenainstalovali engine Docker, můžete tak učinit prostřednictvím terminálu Linux. Pokyny, jak to udělat, najdete v našem článku s názvem„Instalace Dockeru na Ubuntu 22.04“. Níže se dozvíte, jak ovládat engine Docker z terminálu, co pro vás může Docker Hub udělat a proč mohou kontejnery Docker revolučně změnit způsob, jakým pracujete s aplikacemi.

Jak ovládat engine Dockeru

Od verze 16.04 používá Ubuntu k správě procesů program na pozadí systemd(zkratka pro „system daemon“).Systemd jeproces init, který se používá také v jiných distribucích Linuxu, jako jsou RHEL, CentOS nebo Fedora.SystemdobvykledostáváID procesu 1. Jako první proces systému je démon zodpovědný za spouštění, monitorování a ukončování všech následujících procesů. V předchozích verzích Ubuntu (14.10 a starších) tuto funkci přebíráprogram na pozadí upstart.

Démon Docker lze také ovládat pomocí systemd. Ve standardní instalaci je platforma kontejnerů nakonfigurována tak, aby se démon automaticky spouštěl při startu systému. Toto výchozí nastavení lze přizpůsobit pomocí příkazového řádku systemctl.

Pomocí systemctl odesíláte příkazy do systemd, abyste ovládali proces nebo vyžádali jeho stav. Syntaxe takového příkazu je následující:

systemctl [OPTION] [COMMAND]
bash

Některé příkazy odkazují na konkrétní zdroje (například Docker). V terminologii systemd se tyto zdroje označují jako jednotky. V tomto případě je příkaz výsledkem příslušného pokynu a názvu jednotky, na kterou se má odkazovat.

Pokud chcete aktivovat automatické spuštění démona Docker (povolit) nebo jej deaktivovat (zakázat), použijte nástroj příkazového řádku systemctl s následujícími příkazy:

sudo systemctl enable docker
sudo systemctl disable docker
bash

Nástroj příkazového řádku systemctl umožňuje dotazovat se na stav jednotky:

sudo systemctl status docker
bash

Pokud je engine Docker ve vašem systému Ubuntu aktivní, výstup v terminálu by měl vypadat jako na následujícím snímku obrazovky:

Obrázek: The status query via systemctl shows: The Docker engine is active (running)
Status query via systemctl: The Docker Engine is active (running)

Pokud je váš Docker engine momentálně deaktivován, obdržíte stavovou zprávu inactive (dead). V takovém případě musíte ručně spustit Docker daemon, aby bylo možné spustit kontejnery.

Obrázek: The status query via systemctl shows: The Docker engine is inactive (dead)
Status query via systemctl: The Docker engine is inactive (dead)

Pokud chcete ručně spustit, zastavit nebo restartovat engine Docker, použijte jeden z následujících příkazů pro systém systemd.

Chcete-li spustit deaktivovaného démona, použijte systemctl v kombinaci s příkazem start:

sudo systemctl start docker
bash

Pokud chcete ukončit démon Docker, použijte místo toho příkaz stop:

sudo systemctl stop docker
bash

Restartování motoru se spustí příkazem restart:

sudo systemctl restart docker
bash

Jak používat Docker hub

Pokud je engine Docker srdcem kontejnerové platformy, pak je Docker Hub duší open-source projektu. Právě zde se schází komunita. V cloudovém registru mohou uživatelé najít vše, co potřebují k oživení své instalace Dockeru.

Online služba nabízí rozmanité oficiální repozitáře s více než 100 000 bezplatnými aplikacemi. Uživatelé mají možnost vytvořit archiv obrazů a používat je společně s pracovními skupinami. Kromě profesionální podpory poskytované vývojovým týmem zde mohou začátečníci najít kontakty na komunitu uživatelů. Fórum pro podporu komunity je k dispozici na GitHubu.

Obrázek: The Docker hub: Registration
Create your personal Docker ID for free by registering / Source: hub.docker.com

Registrace v Docker Hub

Registrace v Docker Hub je zdarma. Uživatelé potřebují pouze e-mailovou adresu a zvolené Docker ID. To později slouží jako osobní úložiště a umožňuje uživatelům přístup ke všem službám Docker. V současné době tato nabídka zahrnuje kromě Docker Hub také Docker Cloud, Docker Store a vybrané beta programy. Docker ID lze také použít k přihlášení do centra podpory Docker, portálu Docker Success a fóra Docker.

Registrační proces se skládá z pěti kroků:

  1. Vyberte si své Docker ID: Jako první část aplikace si vyberte uživatelské jméno, které bude později sloužit jako vaše osobní Docker ID.
  2. Zadejte e-mailovou adresu: Zadejte svou aktuální e-mailovou adresu. Upozorňujeme, že budete muset potvrdit svou registraci v Docker Hubu prostřednictvím e-mailu.
  3. Vyberte si heslo: Vyberte si tajné heslo.
  4. Odešlete registraci: Klikněte na „Sign up“ (Registrovat se) a odešlete registraci. Jakmile budou data zcela přenesena, Docker vám zašle odkaz pro ověření vaší e-mailové adresy na vámi zadanou e-mailovou schránku.
  5. Potvrďte svou e-mailovou adresu: Potvrďte svou e-mailovou adresu kliknutím na ověřovací odkaz.

Online služby projektu Docker jsou ihned po registraci v prohlížeči k dispozici. Zde můžete vytvářet úložiště a pracovní skupiny nebo pomocí funkce „Explore“ vyhledávat veřejné zdroje v Docker Hub.

Obrázek: Dashboard of the Docker hub
Select and set repositories and workgroups via the Docker hub dashboard / Source: hub.docker.com

Můžete se také zaregistrovat přímo v terminálu svého operačního systému pomocí příkazu docker login. Podrobný popis příkazu naleznete v dokumentaci Dockeru.

V zásadě je Docker Hub dostupný i pro ty, kteří nemají účet ani Docker ID. V takovém případě však lze načítat pouze obrazy z veřejných úložišť. Nahrávání (push) vlastních obrazů není bez Docker ID možné.

Vytvořte úložiště v Docker Hubu

Bezplatný účet Docker Hub obsahuje jedno soukromé úložiště a nabízí možnost vytvořit libovolný počet veřejných úložišť. Pokud potřebujete více soukromých úložišť, můžete je odemknout pomocí placeného upgradu.

Chcete-li vytvořit úložiště, postupujte takto:

  1. Vyberte jmenný prostor: Nově vytvořené repozitáře jsou automaticky přiřazeny k jmennému prostoru vašeho Docker ID. Máte také možnost zadat ID organizace, ke které patříte.
  2. Pojmenujte repozitář: Zadejte název nově vytvořeného repozitáře.
  3. Přidejte popis: Přidejte krátký popis vašeho úložiště.
  4. Nastavte viditelnost: Rozhodněte se, zda má být repozitář veřejně viditelný (veřejný) nebo přístupný pouze vám nebo vaší organizaci (soukromý).

Potvrďte své zadání kliknutím na „Vytvořit“.

Obrázek: The Docker hub: Input screen for creating a repository
Your repositories are automatically created in the namespace of your Docker ID / Source: hub.docker.com

Vytvářejte týmy a organizace

S hubem poskytuje Docker cloudovou platformu, na které jsou vlastní vytvořené obrazy centrálně spravovány a pohodlně sdíleny s pracovními skupinami. V terminologii Dockeru se tyto skupiny nazývají organizace. Stejně jako uživatelské účty dostávají organizace individuální ID, přes které lze obrazy poskytovat a stahovat. Práva a role v rámci organizace lze přiřazovat prostřednictvím týmů. Například uživatelé přiřazení k týmu „Vlastníci“ mají oprávnění vytvářet soukromé nebo veřejné repozitáře a přiřazovat přístupová práva.

Pracovní skupiny lze také vytvářet a spravovat přímo přes ovládací panel. Další informace o organizacích a týmech najdete v dokumentaci Dockeru.

Práce s obrázky a kontejnery

Jako první kontaktní místo pro oficiální zdroje Dockeru je Docker hub naším výchozím bodem pro tento úvod do práce s obrazy a kontejnery. Tým vývojářů poskytl demo obraz whalesay, který bude sloužit jako základ pro následující výukový program Dockeru.

Stáhnout obrazy Dockeru

Obrázek whalesay najdete na webových stránkách Docker hub, když do vyhledávacího pole vedle loga Docker zadáte výraz whalesay.

Obrázek: The search function in Docker hub
Search the Docker hub using the search bar or the ‘Explore’ button / Source: hub.docker.com

Ve výsledcích vyhledávání klikněte na zdroj s názvem docker/whalesay, abyste získali přístup k veřejnému úložišti tohoto obrazu.

Repozitáře Dockeru jsou vždy vytvořeny podle stejného vzoru. V záhlaví stránky najdou uživatelé název obrazu, kategorii repozitáře a čas posledního nahrání (last pushed).

Obrázek: Web view of a Docker repository
In the repository, users generally find all information that is needed to use an image / Source: hub.docker.com

Každé úložiště Docker také nabízí následující informační pole:

  1. Popis: Podrobný popis, obvykle včetně návodu k použití
  2. Příkaz Docker pull: Příkazový řádek používaný ke stažení obrazu z úložiště (pull)
  3. Vlastník: Informace o tvůrci úložiště
  4. Komentáře: Sekce komentářů na konci stránky

Informační pole úložiště ukazují, že whalesay je modifikací open-source skriptu Perl cowsay. Program, vyvinutý Tony Monroem v roce 1999, generuje ASCII grafiku ve formě krávy, která se objeví spolu se zprávou v terminálu uživatele.

Chcete-li stáhnout docker/whalesay, použijte příkaz docker pull:

docker pull [OPTIONS] NAME [:TAG|@DIGEST]
bash

Příkaz docker pull dává démonu pokyn, aby načítal obraz z úložiště. Jaký obraz to je, určíte zadáním názvu obrazu (NAME). Můžete také dát Dockeru pokyn, jak má být požadovaný příkaz proveden (OPTIONS). Volitelné vstupy zahrnují tagy (:TAG) a individuální identifikační čísla (@DIGEST), které vám umožňují stáhnout konkrétní verzi obrazu.

Místní kopii obrazu docker/whalesay získáte pomocí následujícího příkazu:

docker pull docker/whalesay
bash

Obecně můžete tento krok přeskočit. Pokud chcete spustit kontejner, démon Docker automaticky stáhne obrazy z úložiště, které nemůže najít v lokálním systému.

Spouštění obrazů Docker jako kontejnerů

Chcete-li spustit obraz Docker, použijte příkaz docker run:

docker run [OPTIONS] IMAGE [:TAG|@DIGEST] [CMD] [ARG...]
bash

Jedinou povinnou součástí příkazu docker run je název požadovaného obrazu Dockeru. Při spuštění kontejneru však máte také možnost definovat další možnosti, TAGy a DIGESTy. Příkaz docker run lze navíc kombinovat s dalšími příkazy, které se spustí ihned po spuštění kontejneru. V tomto případě se přepíše CMD (COMMAND, definovaný tvůrcem obrazu a automaticky spuštěný při spuštění kontejneru). Další volitelné konfigurace lze definovat pomocí dalších argumentů (ARG…). To umožňuje například přidávat uživatele nebo přenášet proměnné prostředí.

Použijte příkazovou řádku

docker run docker/whalesay cowsay boo
bash

stáhnout existující skript Perl jako obraz a spustit jej v kontejneru. Uvidíte, že whalesay se výrazně liší od zdrojového skriptu.

Obrázek: Terminal output of the container docker/whalesay: The whale says ‘boo’
If docker/whalesay is run with the standard command, the Docker whale is limited to a short ‘boo’

Pokud je spuštěn obrázek docker/whalesay, skript vygeneruje ASCII grafiku ve tvaru velryby a textovou zprávu „boo“, která je předána příkazem cowsay v terminálu.

Stejně jako při testovacím běhu démon nejprve vyhledá požadovaný obraz v lokálním adresáři souborů. Jelikož neexistuje žádný balíček se stejným názvem, je spuštěno stažení z úložiště Docker. Poté démon spustí upravený program cowsay. Pokud se tento program spustí, kontejner se automaticky ukončí.

Stejně jako cowsay, i whalesay od Dockera nabízí možnost zasáhnout do sekvence programu a ovlivnit textový výstup v terminálu. Vyzkoušejte tuto funkci nahrazením „boo“ ve výstupním příkazu libovolným řetězcem nebo například trapným vtipem o velrybách.

sudo docker run docker/whalesay cowsay What did the shark say to the whale? What are you blubbering about?
bash
Obrázek: Terminal output of the container docker/whalesay: A whale with an individual message
Make your Docker whale say whatever you want by placing words in his speech bubble

Zobrazit všechny obrazy Dockeru v lokálním systému

Pokud si nejste jisti, zda jste již konkrétní obrázek stáhli, můžete zobrazit přehled všech obrázků ve vašem lokálním systému. Použijte následující příkazový řádek:

sudo docker image
bash

Příkaz docker images (alternativa docker image ls) vypíše všechny místní obrázky včetně velikosti souboru, značky a ID obrázku.

Obrázek: Overview of all images on the local system
The overview displays the images hello-world and docker/whalesay

Pokud spustíte kontejner, základní obraz se stáhne jako kopie z úložiště a trvale se uloží do vašeho počítače. To vám ušetří čas, pokud budete chtít k obrazu přistupovat později. Nové stažení se spustí pouze v případě, že se změní zdroj obrazu, například pokud je v úložišti k dispozici aktuální verze.

Zobrazit všechny kontejnery v lokálním systému

Pokud chcete zobrazit přehled všech kontejnerů, které jsou spuštěny ve vašem systému nebo byly spuštěny v minulosti, použijte příkazový řádek docker ps v kombinaci s volbou --all (zkratka: -a):

sudo docker ps -a
bash
Obrázek: Overview of all containers on the local system
The overview shows all containers that have been launched on the Docker engine

Výstup terminálu obsahuje informace, jako je příslušné ID kontejneru, základní obraz, příkaz spuštěný při spuštění kontejneru, čas spuštění kontejneru a stav.

Pokud chcete zobrazit pouze kontejnery, které jsou aktuálně spuštěny ve vašem systému, použijte příkazovou řádku docker ps bez dalších parametrů:

sudo docker ps
bash

V současné době by však ve vašem systému neměly být spuštěné žádné kontejnery.

Vytvořit obrazy Dockeru

Náš tutoriál k Dockeru vám sice ukázal, jak najít obrazy v Docker Hubu, stáhnout je a spustit na jakémkoli systému s nainstalovaným Docker engine, ale s Dockerem získáte nejen přístup k rozsáhlé nabídce aplikací dostupných v registru. Platforma také nabízí širokou škálu možností pro vytváření vlastních obrazů a jejich sdílení s ostatními vývojáři.

V úvodních kapitolách tohoto tutoriálu o Dockeru jste se již dozvěděli, že každý obraz Dockeru je založen na souboru Dockerfile. Soubory Dockerfile si můžete představit jako jakousi šablonu pro vytváření obrazů. Jedná se o jednoduché textové soubory, které obsahují všechny pokyny, které Docker potřebuje k vytvoření obrazu. V následujících krocích se naučíte, jak tento typ souboru Dockerfile napsat a jak Dockeru zadat, aby jej použil jako základ pro váš vlastní obraz.

  1. Vytvoření nového adresáře: Tým vývojářů Docker doporučuje vytvořit pro každý soubor Dockerfile nový adresář. Adresáře lze v systému Linux snadno vytvořit v terminálu. Pomocí následujícího příkazu vytvořte adresář s názvem mydockerbuild:
mkdir mydockerbuild
bash
Obrázek: Ubuntu terminal: The command mkdir
Create new directories with the command mkdir
  1. Přejděte do nového adresáře: Pomocí příkazu cd přejděte do nově vytvořeného pracovního adresáře.
cd mydockerbuild
bash
Obrázek: Ubuntu terminal: The command cd
With the help of the cd command, switch to another working directory
  1. Vytvoření nového textového souboru: Textové soubory lze v Ubuntu snadno vytvářet také pomocí terminálu. K tomu použijte editor, jako je Nano nebo Vim. Vytvořte textový soubor s názvem Dockerfile v adresáři mydockerbuild.
nano Dockerfile
bash
Obrázek: Ubuntu terminal: Create text files with Nano
The text editor Nano is preinstalled on all Ubuntu versions
  1. Napište soubor Dockerfile: Nově vytvořený textový soubor slouží jako plán pro vytvoření vlastního obrazu. Namísto programování obrazu od základu použijeme v tomto tutoriálu Docker jako šablonu demo obraz docker/whalesay. Ten se integruje pomocí příkazu FROM ve vašem souboru Dockerfile. Použijte značku :latest pro odkaz na nejnovější verzi obrazu.
FROM docker/whalesay:latest

Zatím funguje docker/whalesay tak, že mu vkládáte slova do úst. V terminálu se zobrazí přesně ten text, který jste zadali, v kombinaci s příkazem ke spuštění kontejneru. Bylo by ale zajímavější, kdyby skript automaticky generoval nový textový výstup. Toho lze dosáhnout například pomocí programu fortunes, který je k dispozici na každém systému Linux. Základní funkcí programu fortunes je generování rčení z koláčků štěstí a vtipných aforismů. Pomocí následujícího příkazu aktualizujte aktuální místní index balíčků a nainstalujte program fortunes:

RUN apt-get -y update && apt-get install -y fortunes

Poté definujte příkaz CMD. Ten se provede po příkazu RUN, pokud nebyl přepsán voláním (docker run image CMD). Pomocí následujícího příkazu spusťte program fortunes s volbou -a („Vybrat ze všech databází“) a zobrazte výstup pomocí programu cowsay v terminálu:

CMD /usr/games/fortune -a | cowsay

Váš soubor Dockerfile by měl vypadat následovně:

FROM docker/whalesay:latest
RUN apt-get -y update && apt-get install -y fortunes
CMD /usr/games/fortune -a | cowsay

Poznámka: Příkazy v souboru Dockerfile jsou vždy psány s jednoduchým řádkováním a vždy začínají klíčovým slovem. Syntaxe nerozlišuje velká a malá písmena, takže nezáleží na tom, zda píšete velkými nebo malými písmeny. Bylo však stanoveno jednotné psaní klíčových slov velkými písmeny.

Obrázek: The text editor Nano in the Ubuntu terminal
Control the text editor Nano via the key combinations given in the footer
  1. Uložení textového souboru: Uložte svůj záznam. Pokud používáte editor Nano, uložte jej pomocí klávesové zkratky [CTRL] + [O] a potvrďte klávesou [ENTER]. Nano vám zobrazí zprávu, že do vybraného souboru byly zapsány tři řádky. Textový editor zavřete pomocí klávesové zkratky [CTRL] + [X].
  2. Vytvoření obrazu jako Dockerfile: Chcete-li vytvořit obraz z Dockerfile, přejděte nejprve do adresáře, kde se nachází textový soubor. Spusťte vytváření obrazu pomocí příkazu docker build. Pokud chcete obraz pojmenovat individuálně nebo mu přidělit značku, použijte možnost -t a poté zadejte požadovanou kombinaci štítku a značky. Standardní formát je name:tag.

V aktuálním příkladu by měl být vytvořen obrázek s názvem docker-whale:

docker build -t docker-whale .
bash

Poslední část označuje, že podkladový soubor Dockerfile se nachází ve vybraném adresáři. Máte také možnost zadat cestu k souboru nebo URL pro zdrojové soubory.

Proces sestavení začíná ihned po potvrzení příkazu klávesou [ENTER]. Nejprve démon Docker zkontroluje, zda má všechny soubory potřebné k vytvoření obrazu. V terminologii Dockeru se toto shrnuje pod pojmem „kontext“.

Poté se nachází obraz docker/whalesay s tagem :latest:

Pokud již existuje celý kontext potřebný pro vytvoření obrazu, démon Docker spustí šablonu obrazu připojenou pomocí FROM v dočasném kontejneru a přejde k dalšímu příkazu v souboru Dockerfile. V aktuálním příkladu se jedná o příkaz RUN, který způsobí instalaci programu fortunes.

Na konci každého kroku procesu vytváření obrazu vám Docker přidělí ID pro odpovídající vrstvu, která byla v daném kroku vytvořena. To znamená, že každý řádek v podkladovém souboru Dockerfile odpovídá jedné vrstvě obrazu, který na něm byl vytvořen.

Po dokončení příkazu RUN démon Docker zastaví kontejner vytvořený pro tento příkaz, odstraní jej a spustí nový dočasný kontejner pro vrstvu příkazu CMD. Na konci procesu vytváření je tento dočasný kontejner také ukončen a odstraněn. Docker vám poskytne ID nového obrazu:

Successfully built a8f2048c9ab8
Obrázek: Ubuntu terminal: Status message during image creation
Docker images are created in multiple layers

Nově vytvořený obraz najdete pod názvem docker-whale v přehledu lokálně uložených obrazů.

sudo docker images
bash
Obrázek: Ubuntu terminal: Overview of all images
The newly created image in the image overview

Chcete-li spustit kontejner z nově vytvořeného obrazu, použijte příkazový řádek sudo docker run v kombinaci s názvem obrazu:

sudo docker run docker-whale
bash

Pokud byl obraz vytvořen správně z Dockerfile, vaše velryba by vás nyní měla inspirovat více či méně moudrými slovy. Poznámka: Pokaždé, když restartujete kontejner, vygeneruje se nová fráze.

Obrázek: Container based on docker-whale: Text output in the terminal
Thanks to fortunes, the ASCII whale now provides witty or wise phrases

Označte obrazy Dockeru a nahrajte je do Docker Hubu.

Pokud chcete nahrát svůj vlastní obraz docker-whale do hubu a zpřístupnit jej komunitě nebo pracovní skupině, musíte jej nejprve propojit s repozitářem stejného jména ve svém osobním jmenném prostoru. V terminologii Dockeru se tento krok nazývá tagování.

Chcete-li publikovat obrázek v Docker Hub, postupujte takto:

  1. Vytvořte úložiště: Přihlaste se do Docker Hubu pomocí svého Docker ID a osobního hesla a vytvořte veřejné úložiště s názvem docker-whale.
Obrázek: The Docker hub: Entry form for creating a repository
Create a repository for your custom image / Source: hub.docker.com
  1. Určete ID obrázku: Určete ID svého vlastního obrázku docker-whale pomocí příkazu příkazového řádku docker images.
Obrázek: Overview of all local images in the Ubuntu terminal
The command docker images lists all images that are saved on your system

V našem případě je ID obrázku a8f2048c9ab8. Potřebujeme ho pro označení v dalším kroku.

  1. Označte obrázek: Označte obrázek docker-whale pomocí příkazového řádku programu docker tag podle následujícího postupu:
sudo docker tag [Image-ID][Docker-ID]/[Image-Name]:[TAG]
bash

V aktuálním příkladu zní příkaz pro označování následovně:

sudo docker tag a8f2048c9ab8 [Namespace]/docker-whale:latest
bash

Pomocí přehledu docker images můžete zkontrolovat, zda jste obrázek správně označili. Název úložiště by nyní měl obsahovat vaše Docker ID.

Obrázek: Ubuntu terminal: Image overview before and after tagging
Link images with your Docker ID using the command docker tag
  1. Nahrajte obrázek: Chcete-li nahrát obrázek, musíte se nejprve přihlásit do Docker Hub. To lze provést pomocí příkazu docker login.
sudo docker login
bash

Terminál vás poté vyzve k zadání uživatelského jména (Docker ID) a hesla.

Obrázek: Log in to the Docker hub via the Ubuntu terminal
Before you can upload an image to the Docker hub, you first need to log in

Pokud se přihlášení podařilo, použijte příkazovou řádku docker push k nahrání obrázku do nově vytvořeného úložiště.

sudo docker push [Namespace]/docker-whale
bash

Proces nahrávání by měl trvat jen několik sekund. Aktuální stav se zobrazuje v terminálu.

Obrázek: Ubuntu terminal: Status message of the image upload
After uploading, the image is available under the set tag latest in the Docker hub

Přihlaste se do Docker Hubu prostřednictvím prohlížeče a zobrazte nahraný obrázek.

Obrázek: Docker hub: The repository [Namespace]/docker-whale in the detailed view
The latest update of your repository is shown in the detailed view / Source: hub.docker.com

Pokud chcete nahrát více než jeden obrázek do jednoho úložiště, použijte různé tagy, abyste mohli nabídnout různé verze svých obrázků. Například:

[Namespace]/docker-whale:latest
[Namespace]/docker-whale:version1
[Namespace]/docker-whale:version2

Přehled různých verzí obrazů naleznete v úložišti Docker Hub v záložce „Tags“ (Značky).

Obrázek: Docker hub: The ‘Tags’ tab
In the ‘Tags’ tab, you’ll find all versions of an image / Source: hub.docker.com

Obrázky různých projektů by však měly být nabízeny v samostatných úložištích.

Pokud bylo nahrání úspěšné, váš vlastní obraz bude nyní k dispozici ve veřejném úložišti pro všechny uživatele Dockeru po celém světě.

  1. Zkušební provoz: Otestujte úspěšnost nahrání tím, že se pokusíte obrázek stáhnout.

Upozorňujeme, že místní verzi obrazu je nutné nejprve smazat, aby bylo možné stáhnout novou kopii se stejnou značkou. V opačném případě Docker nahlásí, že požadovaný obraz již v aktuální verzi existuje.

Obrázek: The Image is up to date
If an image exists locally, the pull command is cancelled

Chcete-li odstranit místní obraz Dockeru, použijte příkazový řádek docker rmi v kombinaci s odpovídajícím ID obrazu. To se určuje jako obvykle pomocí docker images. Pokud Docker zaznamená konflikt, např. protože ID obrazu je použito ve více repozitářích nebo je použito v kontejneru, zopakujte příkaz s volbou --force (zkráceně*-f* ), aby se vynutilo odstranění.

sudo docker rmi -f a8f2048c9ab8
bash
Obrázek: Command docker rmi in combination with the option -f (force)
Use the command docker rmi in combination with the option -f to force a deletion

Znovu zobrazit přehled všech lokálních obrázků:

sudo docker Images
bash

Odstraněné prvky by se již neměly objevovat ve výstupu terminálu. Nyní použijte příkaz pull uvedený v úložišti ke stažení nové kopie obrazu z Docker hubu.

sudo docker pull [Namespace]/docker-whale
bash
Obrázek: Ubuntu terminal: Download from the Docker hub
The previously published image is successfully downloaded

Další témata a výukové programy týkající se Dockeru

Svět Dockeru je rozsáhlý a v průběhu času se z nástrojů Dockeru vyvinul živý ekosystém. Docker je obzvláště užitečný pro administrátory, zejména pokud provozují složité aplikace s více kontejnery paralelně na různých systémech. Docker nabízí rozmanité funkce pro orchestraci takovýchto klastrů. Více informací o tomto tématu najdete v našem článku o orchestraci Dockeru pomocí Swarm a Compose.

Digitální průvodce obsahuje další návody pro práci s Dockerem:

  • Nastavení úložiště Docker
  • Svazky kontejnerů Docker
  • Docker: Zálohování a obnovení
  • Instalace a spuštění Dockeru na serveru Linux
  • Návod k Docker Compose

Docker je vhodný pro různé scénáře použití. V digitálním průvodci najdete následující návody:

  • Nasazení WordPressu v kontejnerech Docker
  • Spuštění VPN v kontejneru Docker pomocí SoftEther
  • Instalace Nextcloud s Dockerem
  • Instalace Portainer pod Docker
  • Redis v kontejnerech Docker
  • Server Valheim Docker

Docker není vždy tou nejlepší volbou pro každou aplikaci. Jeden z našich článků se zabývá nejoblíbenějšími alternativami k Dockeru. Kromě toho máme k dispozici mnoho článků, které porovnávají Docker s jinými platformami:

  • Kubernetes vs. Docker
  • Openshift vs. Docker
  • Podman vs. Docker
Přejít do hlavního menu