V našom tutoriáli k Dockeru vám predstavíme virtualizačnú platformu Docker a ukážeme vám, ako používať Docker vo vašom systéme Ubuntu 22.04 pomocou jednoduchých pokynov.

Štruktúra a vlastnosti Dockeru

„Vytvorte, odošlite a spustite akúkoľvek aplikáciu kdekoľvek“ – to je motto spoločnosti Docker. Platforma kontajnerov s otvoreným zdrojovým kódom ponúka flexibilnú alternatívu s nízkymi nárokmi na zdroje pre emuláciu hardvérových komponentov založenú na virtuálnych strojoch (VM).

Zatiaľ čo tradičná hardvérová virtualizácia je založená na spúšťaní viacerých hosťovských systémov na spoločnom hostiteľskom systéme, aplikácie Docker sa spúšťajú ako izolované procesy na tom istom systéme s pomocou kontajnerov. Tomuto sa hovorí virtualizácia založená na kontajneroch, tiež označovaná ako virtualizácia na úrovni operačného systému.

Obrázok: 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

Veľkou výhodou virtualizácie založenej na kontajneroch je, že aplikácie s rôznymi požiadavkami môžu bežať izolovane od seba bez nutnosti samostatného hosťovského systému. Navyše, s kontajnermi je možné aplikácie nasadzovať na rôznych platformách a v rôznych infraštruktúrach bez nutnosti prispôsobovať sa hardvérovým alebo softvérovým konfiguráciám hostiteľského systému.

Docker je najpopulárnejší softvérový projekt, ktorý používateľom poskytuje virtualizačnú technológiu založenú na kontajneroch. Táto open-source platforma je založená na troch základných komponentoch. Na spustenie kontajnerov používatelia potrebujú iba Docker engine a špeciálne Docker obrazy, ktoré je možné získať prostredníctvom Docker hubu alebo vytvoriť sami.

Obrázky Docker

Podobne ako virtuálne stroje, aj kontajnery Docker sú založené na obrazoch Docker. Obraz je šablóna len na čítanie, ktorá obsahuje všetky pokyny, ktoré engine Docker potrebuje na vytvorenie kontajnera. Obraz Docker je popísaný ako prenosný obraz kontajnera vo forme textového súboru, nazývaného aj Dockerfile. Ak sa má kontajner spustiť v systéme, najskôr sa načíta balík s príslušným obrazom, pokiaľ neexistuje lokálne. Načítaný obraz poskytuje potrebný súborový systém vrátane všetkých parametrov pre beh. Kontajner možno považovať za bežiaci proces obrazu.

Docker hub

Docker hub je cloudový register softvérových repozitárov, druh knižnice pre obrazy Docker. Online služba je rozdelená na verejnú a súkromnú časť. Verejná časť ponúka používateľom možnosť nahrať svoje vlastné vyvinuté obrazy a zdieľať ich s komunitou. Tu je k dispozícii množstvo oficiálnych obrazov od vývojárskeho tímu Docker a etablovaných open-source projektov. Obrazy nahrané do súkromnej časti registra nie sú verejne prístupné, a preto ich možno zdieľať napríklad v rámci vnútorného kruhu spoločnosti alebo s priateľmi či známymi. Docker hub je dostupný na adrese hub.docker.com.

Docker engine

Srdcom projektu Docker je Docker engine. Ide o open-source klientsko-serverovú aplikáciu, ktorá je v aktuálnej verzii dostupná všetkým používateľom na všetkých etablovaných platformách.

Základná architektúra motora Docker je rozdelená na tri komponenty: démon s funkciami servera, programovacie rozhranie (API) založené na programovacom paradigme REST (Representational State Transfer) a terminál operačného systému (rozhranie príkazového riadku, CLI) ako používateľské rozhranie (klient).

  • Docker daemon: Ako server pre Docker engine sa používa proces daemon. Docker daemon beží na pozadí hostiteľského systému a slúži na centrálne ovládanie Docker engine. Táto funkcia vytvára a spravuje všetky obrazy, kontajnery alebo siete.
  • REST-API: REST-API špecifikuje súbor rozhraní, ktoré umožňujú iným programom komunikovať s démonom Docker a dávať mu pokyny. Jedným z týchto programov je terminál operačného systému.
  • Terminál: Ako klientský program používa Docker terminál operačného systému. Ten je integrovaný s démonom Docker prostredníctvom REST-API a umožňuje používateľom ovládať ho prostredníctvom skriptov alebo používateľských vstupov.
Tip

V roku 2017 bol engine Docker premenovaný na Docker Community Edition (skrátene Docker CE), ale oficiálna dokumentácia a repozitáre Docker väčšinou stále používajú starý názov. Okrem Docker CE existuje aj Docker Enterprise Edition (Docker EE), ktorý má niektoré prémiové funkcie. Nie je však zadarmo a je vhodnejší pre podniky.

Pomocou príkazov Docker je možné spúšťať, zastavovať a spravovať softvérové kontajnery používateľov priamo z terminálu. Daemon je adresovaný prostredníctvom príkazu docker a inštrukcií ako build, pull alebo run. Klient a server môžu byť na rovnakom systéme. Používatelia majú tiež možnosť pristupovať k démonu Docker na inom systéme. V závislosti od typu vytvoreného pripojenia prebieha komunikácia medzi klientom a serverom prostredníctvom REST-API, UNIX socketov alebo sieťového rozhrania.

Nasledujúci graf znázorňuje vzájomné pôsobenie jednotlivých komponentov Dockeru s príkladovými príkazmi docker build, docker pull a docker run:

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

Príkaz docker build nariaďuje démonu Docker vytvoriť obraz (bodkovaná čiara). Na to musí byť k dispozícii príslušný súbor Dockerfile. Ak sa obraz nemá vytvoriť, ale namiesto toho sa má načítať z úložiska v Docker hub, použije sa príkaz docker pull (čiarkovaná čiara). Ak je démon Docker prostredníctvom docker run inštruovaný na spustenie kontajnera, program na pozadí skontroluje, či je príslušný obraz kontajnera lokálne dostupný. Ak áno, kontajner sa spustí (plná čiara). Ak démon obraz nenájde, automaticky iniciuje stiahnutie z repozitára.

Práca s Dockerom

Teraz je čas zoznámiť sa s aplikáciami kontajnerovej platformy. Ak ste ešte nenainštalovali Docker engine, môžete tak urobiť prostredníctvom terminálu Linux. Pokyny, ako to urobiť, nájdete v našom článku s názvom„Inštalácia Dockeru na Ubuntu 22.04“. Nižšie sa dozviete, ako ovládať Docker Engine z terminálu, čo vám môže Docker Hub ponúknuť a prečo môžu kontajnery Docker revolučným spôsobom zmeniť spôsob, akým pracujete s aplikáciami.

Ako ovládať engine Docker

Od verzie 16.04 používa Ubuntu na správu procesov program na pozadí systemd(skratka pre „system daemon“).Systemd jeproces init, ktorý sa používa aj v iných distribúciách Linuxu, ako sú RHEL, CentOS alebo Fedora.SystemdzvyčajnedostávaID procesu 1. Ako prvý proces systému je démon zodpovedný za spúšťanie, monitorovanie a ukončovanie všetkých nasledujúcich procesov. V predchádzajúcich verziách Ubuntu (14.10 a starších) túto funkciu preberáprogram na pozadí upstart.

Démon Docker sa dá ovládať aj cez systemd. Pri štandardnej inštalácii je platforma kontajnerov nakonfigurovaná tak, aby sa démon automaticky spustil pri štarte systému. Toto predvolené nastavenie sa dá prispôsobiť cez nástroj príkazového riadku systemctl.

Pomocou systemctl posielate príkazy do systemd na ovládanie procesu alebo na požiadanie o jeho stav. Syntax takéhoto príkazu je nasledovná:

systemctl [OPTION] [COMMAND]
bash

Niektoré príkazy sa vzťahujú na konkrétne zdroje (napríklad Docker). V terminológii systemd sa tieto zdroje označujú ako jednotky. V tomto prípade je príkaz výsledkom príslušnej inštrukcie a názvu jednotky, na ktorú sa vzťahuje.

Ak chcete aktivovať automatické spúšťanie démona Docker (povoliť) alebo ho deaktivovať (zakázať), použite nástroj príkazového riadku systemctl s nasledujúcimi príkazmi:

sudo systemctl enable docker
sudo systemctl disable docker
bash

Nástroj príkazového riadku systemctl vám umožňuje zistiť stav jednotky:

sudo systemctl status docker
bash

Ak je engine Docker vo vašom systéme Ubuntu aktívny, výstup v termináli by mal vyzerať ako na nasledujúcom snímku obrazovky:

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

Ak je váš Docker engine momentálne deaktivovaný, dostanete oznámenie o stave inactive (dead). V takomto prípade musíte ručne spustiť Docker daemon, aby ste mohli spustiť kontajnery.

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

Ak chcete ručne spustiť, zastaviť alebo reštartovať svoj Docker engine, použite jeden z nasledujúcich príkazov v systéme systemd.

Na spustenie deaktivovaného démona použite systém systemctl v kombinácii s príkazom start:

sudo systemctl start docker
bash

Ak chcete ukončiť démon Docker, použite namiesto toho príkaz stop:

sudo systemctl stop docker
bash

Reštartovanie motora sa spustí príkazom restart:

sudo systemctl restart docker
bash

Ako používať Docker hub

Ak je Docker engine srdcom kontajnerovej platformy, potom je Docker hub dušou open-source projektu. Tu sa stretáva komunita. V cloudovom registri môžu používatelia nájsť všetko, čo potrebujú na oživenie svojej inštalácie Docker.

Online služba ponúka rôznorodé oficiálne repozitáre s viac ako 100 000 bezplatnými aplikáciami. Používatelia majú možnosť vytvoriť archív obrázkov a používať ich spoločne s pracovnými skupinami. Okrem profesionálnej podpory, ktorú ponúka vývojový tím, tu môžu začiatočníci nájsť aj kontakty na komunitu používateľov. Fórum pre podporu komunity je k dispozícii na GitHub.

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

Registrácia v Docker hub

Registrácia v Docker Hub je bezplatná. Používatelia potrebujú len e-mailovú adresu a zvolené Docker ID. To slúži neskôr ako osobný priestor pre úložisko a poskytuje používateľom prístup ku všetkým službám Docker. V súčasnosti táto ponuka okrem Docker Hub zahŕňa aj Docker Cloud, Docker Store a vybrané beta programy. Umožňuje tiež používať Docker ID ako prihlasovacie údaje do centra podpory Docker, ako aj do portálu Docker Success a fóra Docker.

Proces registrácie pozostáva z piatich krokov:

  1. Vyberte si svoje Docker ID: Ako prvú časť žiadosti si vyberte používateľské meno, ktoré sa neskôr použije ako vaše osobné Docker ID.
  2. Zadajte e-mailovú adresu: Zadajte svoju aktuálnu e-mailovú adresu. Upozorňujeme, že registráciu v Docker hub budete musieť potvrdiť prostredníctvom e-mailu.
  3. Vyberte si heslo: Vyberte si tajné heslo.
  4. Odošlite registráciu: Kliknite na „Sign up“ (Zaregistrovať sa), aby ste odoslali registráciu. Po úplnom odoslaní údajov vám Docker pošle odkaz na overenie vašej e-mailovej adresy do vašej uvedenej schránky.
  5. Potvrďte svoju e-mailovú adresu: Potvrďte svoju e-mailovú adresu kliknutím na overovací odkaz.

Online služby projektu Docker sú ihneď dostupné po registrácii v prehliadači. Tu môžete vytvárať repozitáre a pracovné skupiny alebo vyhľadávať verejné zdroje v Docker Hub pomocou funkcie „Explore“.

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

Môžete sa tiež zaregistrovať priamo v termináli vášho operačného systému prostredníctvom prihlásenia do Dockeru. Podrobný popis príkazu nájdete v dokumentácii Dockeru.

V zásade je Docker hub dostupný aj pre používateľov bez účtu alebo Docker ID. V takomto prípade je však možné načítať iba obrazy z verejných úložísk. Nahratie (push) vlastných obrazov nie je možné bez Docker ID.

Vytvorenie úložísk v Docker Hub

Bezplatný účet Docker Hub obsahuje jeden súkromný repozitár a ponúka možnosť vytvoriť ľubovoľný počet verejných repozitárov. Ak potrebujete viac súkromných repozitárov, môžete ich odomknúť prostredníctvom plateného upgrade.

Na vytvorenie úložiska postupujte takto:

  1. Vyberte si menný priestor: Novo vytvorené repozitáre sú automaticky priradené k mennému priestoru vášho Docker ID. Máte tiež možnosť zadať ID organizácie, ktorej ste členom.
  2. Označte repozitár: Zadajte názov novo vytvoreného repozitára.
  3. Pridať popis: Pridajte krátky popis vášho repozitára.
  4. Nastavte viditeľnosť: Rozhodnite sa, či má byť repozitár verejne viditeľný (verejný) alebo prístupný len vám alebo vašej organizácii (súkromný).

Potvrďte svoje zadanie kliknutím na „Vytvoriť“.

Obrázok: 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árajte tímy a organizácie

S hubom poskytuje Docker cloudovú platformu, na ktorej sa vlastné obrazy centrálne spravujú a pohodlne zdieľajú s pracovnými skupinami. V terminológii Docker sa tieto skupiny nazývajú organizácie. Rovnako ako používateľské účty, aj organizácie dostávajú individuálne ID, prostredníctvom ktorých je možné obrazy poskytovať a sťahovať. Práva a úlohy v rámci organizácie je možné prideľovať prostredníctvom tímov. Napríklad používatelia pridelení do tímu „Vlastníci“ majú oprávnenie vytvárať súkromné alebo verejné úložiská a prideľovať prístupové práva.

Pracovné skupiny je možné vytvárať a spravovať aj priamo prostredníctvom riadiaceho panela. Ďalšie informácie o organizáciách a tímoch nájdete v dokumentácii Docker.

Práca s obrázkami a kontajnermi

Ako prvý kontaktný bod pre oficiálne zdroje Dockeru je Docker hub naším východiskovým bodom pre tento úvod do práce s obrazmi a kontajnermi. Tím vývojárov poskytol demo obraz whalesay, ktorý bude slúžiť ako základ pre nasledujúci tutoriál Dockeru.

Stiahnuť obrazy Docker

Obrázok whalesay nájdete na webovej stránke Docker hub, keď do vyhľadávacieho poľa vedľa loga Docker zadáte výraz whalesay.

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

Vo výsledkoch vyhľadávania kliknite na zdroj s názvom docker/whalesay, aby ste získali prístup k verejnému úložisku pre tento obrázok.

Repozitáre Docker sú vždy vytvorené podľa rovnakého vzoru. V hlavičke stránky nájdu používatelia názov obrazu, kategóriu repozitára a čas posledného nahrania (last pushed).

Obrázok: 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žisko Docker ponúka aj nasledujúce informačné políčka:

  1. Popis: Podrobný popis, zvyčajne vrátane návodu na použitie
  2. Príkaz Docker pull: Príkazový riadok používaný na stiahnutie obrazu z úložiska (pull)
  3. Vlastník: Informácie o tvorcovi úložiska
  4. Komentáre: Sekcia komentárov na konci stránky

Informačné polia úložiska ukazujú, že whalesay je modifikáciou open-source skriptu Perl cowsay. Program, vyvinutý Tony Monroeom v roku 1999, generuje ASCII grafiku v podobe kravy, ktorá sa zobrazuje spolu so správou v termináli používateľa.

Na stiahnutie docker/whalesay použite príkaz docker pull:

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

Príkaz docker pull nariaďuje démonovi načítať obraz z úložiska. Určíte, o ktorý obraz ide, zadávaním názvu obrazu (NAME). Môžete tiež nariadiť Dockeru, ako má byť požadovaný príkaz vykonaný (OPTIONS). Voliteľné vstupy zahŕňajú tagy (:TAG) a individuálne identifikačné čísla (@DIGEST), ktoré vám umožňujú stiahnuť konkrétnu verziu obrazu.

Lokálnu kópiu obrazu docker/whalesay získate pomocou nasledujúceho príkazu:

docker pull docker/whalesay
bash

Všeobecne môžete tento krok preskočiť. Ak chcete spustiť kontajner, démon Docker automaticky stiahne obrazy z úložiska, ktoré nemôže nájsť v lokálnom systéme.

Spustite obrazy Docker ako kontajnery

Na spustenie obrazu Docker použite príkaz docker run:

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

Jedinou povinnou súčasťou príkazu docker run je názov požadovaného obrazu Docker. Pri spustení kontajnera však máte možnosť definovať aj ďalšie možnosti, TAG a DIGEST. Príkaz docker run je možné kombinovať s ďalšími príkazmi, ktoré sa spustia hneď po spustení kontajnera. V tomto prípade sa prepíše CMD (COMMAND, definované tvorcom obrazu a automaticky vykonávané pri spustení kontajnera). Ďalšie voliteľné konfigurácie je možné definovať prostredníctvom dodatočných argumentov (ARG…). To umožňuje napríklad pridávať používateľov alebo prenášať premenné prostredia.

Použite príkazový riadok

docker run docker/whalesay cowsay boo
bash

na stiahnutie existujúceho skriptu Perl ako obraz a spustenie v kontajneri. Uvidíte, že whalesay sa výrazne líši od zdrojového skriptu.

Obrázok: 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’

Ak je spustený obrázok docker/whalesay, skript vypíše ASCII grafiku v podobe veľryby, ako aj textovú správu „boo“, odoslanú pomocou príkazu cowsay v termináli.

Rovnako ako pri testovacom behu, démon najskôr vyhľadá požadovaný obraz v lokálnom adresári súborov. Keďže neexistuje balík s rovnakým názvom, spustí sa sťahovanie z repozitára Docker. Potom démon spustí upravený program cowsay. Ak sa tento program úspešne spustí, kontajner sa automaticky ukončí.

Podobne ako cowsay, aj whalesay od Dockera ponúka možnosť zasiahnuť do sekvencie programu a ovplyvniť textový výstup v termináli. Túto funkciu vyskúšajte nahradením „boo“ vo výstupnom príkaze akýmkoľvek reťazcom znakov alebo napríklad trápnym vtipom o veľrybách.

sudo docker run docker/whalesay cowsay What did the shark say to the whale? What are you blubbering about?
bash
Obrázok: 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

Zobraziť všetky obrazy Docker v lokálnom systéme

Ak si nie ste istí, či ste už konkrétny obrázok stiahli, môžete zobraziť prehľad všetkých obrázkov vo vašom lokálnom systéme. Použite nasledujúci príkazový riadok:

sudo docker image
bash

Príkaz docker images (alternatíva docker image ls) vypíše všetky lokálne obrázky vrátane veľkosti súboru, značky a ID obrázku.

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

Ak spustíte kontajner, základný obraz sa stiahne ako kópia z úložiska a trvalo sa uloží do vášho počítača. Tým ušetríte čas, ak budete chcieť k obrazu pristupovať neskôr. Nové stiahnutie sa spustí len v prípade, ak sa zmení zdroj obrazu, napríklad ak je v úložisku k dispozícii aktuálna verzia.

Zobraziť všetky kontajnery v lokálnom systéme

Ak chcete zobraziť prehľad všetkých kontajnerov, ktoré bežia vo vašom systéme alebo boli spustené v minulosti, použite príkazový riadok docker ps v kombinácii s voľbou --all (skrátene: -a):

sudo docker ps -a
bash
Obrázok: 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 informácie, ako je príslušné ID kontajnera, základný obraz, príkaz spustený pri štarte kontajnera, čas spustenia kontajnera a stav.

Ak chcete zobraziť len kontajnery, ktoré sú momentálne spustené vo vašom systéme, použite príkazový riadok docker ps bez ďalších volieb:

sudo docker ps
bash

V súčasnosti by však vo vašom systéme nemali byť spustené žiadne kontajnery.

Vytvorenie obrazov Docker

Nie je to tak, že náš tutoriál k Dockeru vám ukázal, ako nájsť obrazy v Docker hub, stiahnuť ich a spustiť na akomkoľvek systéme s nainštalovaným Docker engine. Ale s Dockerom nebudete mať prístup len k rozsiahlej škále aplikácií dostupných v registri. Platforma ponúka aj širokú škálu možností na vytváranie vlastných obrazov a ich zdieľanie s inými vývojármi.

V úvodných kapitolách tohto tutoriálu o Docker ste sa už dozvedeli, že každý obraz Docker je založený na súbore Dockerfile. Súbory Dockerfile si môžete predstaviť ako akési stavebné šablóny pre obrazy. Ide o jednoduché textové súbory, ktoré obsahujú všetky pokyny, ktoré Docker potrebuje na vytvorenie obrazu. V nasledujúcich krokoch sa naučíte, ako napísať tento typ súboru Dockerfile a nariadiť Docker, aby ho použil ako základ pre váš vlastný obraz.

  1. Vytvorenie nového adresára: Tím vývojárov Docker odporúča vytvoriť nový adresár pre každý súbor Dockerfile. Adresáre sa v systéme Linux ľahko vytvárajú v termináli. Použite nasledujúci príkaz na vytvorenie adresára s názvom mydockerbuild:
mkdir mydockerbuild
bash
Obrázok: Ubuntu terminal: The command mkdir
Create new directories with the command mkdir
  1. Navigácia v novom adresári: Použite príkaz cd na navigáciu v novo vytvorenom pracovnom adresári.
cd mydockerbuild
bash
Obrázok: Ubuntu terminal: The command cd
With the help of the cd command, switch to another working directory
  1. Vytvorenie nového textového súboru: Textové súbory môžete v systéme Ubuntu ľahko vytvárať aj prostredníctvom terminálu. Na tento účel použite editor, napríklad Nano alebo Vim. Vytvorte textový súbor s názvom Dockerfile v adresári mydockerbuild.
nano Dockerfile
bash
Obrázok: Ubuntu terminal: Create text files with Nano
The text editor Nano is preinstalled on all Ubuntu versions
  1. Napíšte Dockerfile: Novo vytvorený textový súbor slúži ako stavebný plán pre váš vlastný obraz. Namiesto programovania obrazu od základov použijeme v tomto tutoriáli Docker ako šablónu demo obraz docker/whalesay. Ten je integrovaný pomocou príkazu FROM vo vašom Dockerfile. Použite tag :latest na odkazovanie na najnovšiu verziu obrazu.
FROM docker/whalesay:latest

Doteraz funguje docker/whalesay tak, že mu vkladáte slová do úst. V termináli sa zobrazí presný text, ktorý ste zadali, v kombinácii s príkazom na spustenie kontajnera. Bolo by však zaujímavejšie, keby skript automaticky generoval nový textový výstup. To je možné napríklad pomocou programu fortunes, ktorý je k dispozícii v každom systéme Linux. Základnou funkciou programu fortunes je generovanie výrokov z koláčikov šťastia a vtipných aforizmov. Použite nasledujúci príkaz na aktualizáciu vášho aktuálneho lokálneho indexu balíkov a inštaláciu programu fortunes:

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

Potom definujte príkaz CMD. Ten sa vykoná po príkaze RUN, pokiaľ nie je prepísaný volaním (docker run image CMD). Použite nasledujúci príkaz na spustenie programu fortunes s voľbou -a („Vybrať zo všetkých databáz“) a zobrazenie výstupu prostredníctvom programu cowsay v termináli:

CMD /usr/games/fortune -a | cowsay

Váš súbor Dockerfile by mal vyzerať takto:

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

Poznámka: Príkazy v súbore Dockerfile sú vždy písané s jednoduchým riadkovaním a vždy začínajú kľúčovým slovom. Základná syntax nie je citlivá na veľkosť písmen, takže nezáleží na tom, či píšete veľkými alebo malými písmenami. Bola však stanovená konzistentná veľkosť písmen kľúčových slov.

Obrázok: The text editor Nano in the Ubuntu terminal
Control the text editor Nano via the key combinations given in the footer
  1. Uložte textový súbor: Uložte svoj záznam. Ak používate editor Nano, uložte ho pomocou kombinácie klávesov [CTRL] + [O] a potvrďte klávesom [ENTER]. Nano vám oznámi, že do vybraného súboru boli zapísané tri riadky. Textový editor zatvorte kombináciou klávesov [CTRL] + [X].
  2. Vytvorenie obrazu ako Dockerfile: Ak chcete vytvoriť obraz z Dockerfile, prejdite najskôr do adresára, v ktorom sa nachádza textový súbor. Spustite vytváranie obrazu pomocou príkazu docker build. Ak chcete obraz individuálne pomenovať alebo mu prideliť značku, použite možnosť -t a potom požadovanú kombináciu označenia a značky. Štandardný formát je name:tag.

V aktuálnom príklade by mal byť vytvorený obrázok s názvom docker-whale:

docker build -t docker-whale .
bash

Posledný úsek označuje, že základný súbor Dockerfile sa nachádza vo vybranom adresári. Máte tiež možnosť špecifikovať cestu k súboru alebo URL pre zdrojové súbory.

Proces zostavovania sa spustí hneď po potvrdení príkazu stlačením klávesy [ENTER]. Najskôr démon Docker skontroluje, či má všetky súbory potrebné na vytvorenie obrazu. V terminológii Docker sa to zhrňuje pod pojmom „kontext“.

Potom sa obraz docker/whalesay s tagom :latest nachádza:

Ak požadovaný kontext pre vytvorenie obrazu už existuje v celom rozsahu, démon Docker spustí šablónu obrazu pripojenú prostredníctvom FROM v dočasnom kontajneri a prejde k ďalšiemu príkazu v súbore Dockerfile. V aktuálnom príklade je to príkaz RUN, ktorý spôsobí inštaláciu programu fortunes.

Na konci každého kroku procesu vytvárania obrazu vám Docker pridelí ID pre príslušnú vrstvu, ktorá bola vytvorená v danom kroku. To znamená, že každý riadok v podkladovom súbore Dockerfile zodpovedá vrstve obrazu, ktorý je na ňom postavený.

Po dokončení príkazu RUN démon Docker zastaví kontajner vytvorený pre tento príkaz, odstráni ho a spustí nový dočasný kontajner pre vrstvu príkazu CMD. Na konci procesu vytvárania sa tento dočasný kontajner tiež ukončí a odstráni. Docker vám poskytne ID nového obrazu:

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

Váš novo vytvorený obraz nájdete pod názvom docker-whale v prehľade vašich lokálne uložených obrazov.

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

Na spustenie kontajnera z novo vytvoreného obrazu použite príkazový riadok sudo docker run v kombinácii s názvom obrazu:

sudo docker run docker-whale
bash

Ak bol obraz správne vytvorený z Dockerfile, vaša veľryba by vás teraz mala inšpirovať viac či menej múdrymi slovami. Poznámka: Pri každom reštarte kontajnera sa vygeneruje nová fráza.

Obrázok: 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 Docker a nahrajte ich do Docker Hub.

Ak chcete nahrať svoj vlastný obraz docker-whale do hubu a sprístupniť ho komunite alebo pracovnej skupine, musíte ho najskôr prepojiť s repozitárom s rovnakým názvom vo vašom osobnom mennom priestore. V terminológii Docker sa tento krok nazýva tagovanie.

Ak chcete publikovať obrázok v Docker Hub, postupujte takto:

  1. Vytvorte úložisko: Prihláste sa do Docker Hub pomocou svojho Docker ID a osobného hesla a vytvorte verejné úložisko s názvom docker-whale.
Obrázok: The Docker hub: Entry form for creating a repository
Create a repository for your custom image / Source: hub.docker.com
  1. Určite ID obrázku: Určite ID vášho vlastného obrázku docker-whale pomocou príkazu docker images.
Obrázok: Overview of all local images in the Ubuntu terminal
The command docker images lists all images that are saved on your system

V našom prípade je ID obrázku a8f2048c9ab8. Potrebujeme ho na označenie v ďalšom kroku.

  1. Označte obrázok: Označte obrázok docker-whale pomocou programu príkazového riadku docker tag podľa nasledujúceho postupu:
sudo docker tag [Image-ID][Docker-ID]/[Image-Name]:[TAG]
bash

V aktuálnom príklade je príkazová riadková direktíva pre označovanie nasledovná:

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

Pomocou prehľadu docker images môžete skontrolovať, či ste svoj obrázok správne označili. Názov úložiska by teraz mal obsahovať vaše Docker ID.

Obrázok: Ubuntu terminal: Image overview before and after tagging
Link images with your Docker ID using the command docker tag
  1. Nahrajte obrázok: Ak chcete nahrať obrázok, musíte sa najskôr prihlásiť do Docker hub. To môžete urobiť pomocou príkazu docker login.
sudo docker login
bash

Terminál vás potom vyzve na zadanie používateľského mena (Docker ID) a hesla.

Obrázok: 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

Ak sa prihlásenie podarilo, použite príkazový riadok docker push na nahratie obrázku do novo vytvoreného úložiska.

sudo docker push [Namespace]/docker-whale
bash

Proces nahrávania by mal trvať len niekoľko sekúnd. Aktuálny stav sa zobrazuje v termináli.

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

Prihláste sa do Docker Hubu prostredníctvom prehliadača, aby ste mohli zobraziť nahraný obrázok.

Obrázok: 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

Ak chcete nahrať viac ako jeden obrázok do jedného úložiska, použite rôzne tagy, aby ste mohli ponúknuť svoje obrázky v rôznych verziách. Napríklad:

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

Prehľad rôznych verzií obrázkov nájdete v repozitári Docker hub v záložke „Tags“ (Tagy).

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

Obrázky rôznych projektov by však mali byť ponúkané v samostatných úložiskách.

Ak bolo nahratie úspešné, váš vlastný obraz bude teraz k dispozícii vo verejnom repozitári pre všetkých používateľov Dockeru po celom svete.

  1. Testovacie spustenie: Otestujte úspešnosť nahrania pokusom o stiahnutie obrázku.

Upozorňujeme, že lokálna verzia obrazu musí byť najskôr odstránená, aby bolo možné stiahnuť novú kópiu s rovnakou značkou. V opačnom prípade Docker nahlási, že požadovaný obraz už existuje v aktuálnej verzii.

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

Na odstránenie lokálneho obrazu Docker použite príkazový riadok docker rmi v kombinácii s príslušným ID obrazu. To sa určuje, ako zvyčajne, prostredníctvom docker images. Ak Docker zaznamená konflikt, napr. preto, že ID obrazu sa používa vo viacerých repozitároch alebo sa používa v kontajneri, zopakujte príkaz s voľbou --force (skrátene*-f* ), aby ste vynútili odstránenie.

sudo docker rmi -f a8f2048c9ab8
bash
Obrázok: 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 zobraziť prehľad všetkých lokálnych obrázkov:

sudo docker Images
bash

Odstránené prvky by sa už nemali zobrazovať vo výstupe terminálu. Teraz použite príkaz pull uvedený v repozitári na stiahnutie novej kópie obrazu z Docker hub.

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

Ďalšie témy a návody týkajúce sa Dockeru

Svet Dockeru je rozsiahly a v priebehu času sa z nástrojov Dockeru vyvinul živý ekosystém. Docker je obzvlášť užitočný pre správcov, najmä ak prevádzkujú komplexné aplikácie s viacerými kontajnermi paralelne na rôznych systémoch. Docker ponúka rôznorodé funkcie na koordináciu takýchto klastrov. Viac informácií o tejto téme nájdete v našom článku o koordinácii Dockeru s nástrojmi Swarm a Compose.

Digitálny sprievodca obsahuje ďalšie návody na prácu s Dockerom:

  • Nastavenie úložiska Docker
  • Objemy kontajnerov Docker
  • Docker: Zálohovanie a obnovenie
  • Inštalácia a spustenie Docker na serveri Linux
  • Návod na používanie Docker Compose

Docker je vhodný pre rôzne scenáre použitia. V digitálnom sprievodcovi nájdete nasledujúce návody:

  • Nasadenie WordPressu v kontajneroch Docker
  • Spustite VPN v kontajneri Docker pomocou SoftEther
  • Inštalácia Nextcloud s Docker
  • Inštalácia Portainer pod Docker
  • Redis v kontajneroch Docker
  • Server Valheim Docker

Docker nie je vždy tou najlepšou voľbou pre každú aplikáciu. Jeden z našich článkov sa venuje najpopulárnejším alternatívam Dockeru. Okrem toho máme k dispozícii mnoho článkov, ktoré porovnávajú Docker s inými platformami:

  • Kubernetes vs. Docker
  • Openshift vs. Docker
  • Podman vs. Docker
Prejsť na hlavné menu