Úvod
Docker je platforma, ktorá uľahčuje spúšťanie a správu aplikačných procesov v kontajneroch. Poskytuje spôsob, ako oddeliť vaše aplikácie od vašej infraštruktúry. Kontajnery sú veľmi podobné virtuálnym strojom, ale sú prenosnejšie, efektívnejšie a ľahšie sa používajú. Existujú rôzne spôsoby, ako nainštalovať Docker na Linux distribúciách. Najpopulárnejší a najjednoduchší spôsob inštalácie Dockera na existujúci operačný systém je pomocou príkazov yum.
Tento návod vám ukáže, ako môžete nastaviť a používať Docker na CentOS 7 v niekoľkých jednoduchých krokoch.
Požiadavky:
- 64-bitový inštancia CentOS 7.
- Používateľ bez oprávnení root s privilégiami sudo.
Všetky príkazy, ktoré vykonáte v tomto návode, sa spúšťajú ako používateľ bez oprávnení root a v prípade potreby bude prístup root poskytnutý pomocou kľúčového slova sudo.
Krok 1: Nastavenie Dockera na inštancii CentOS 7
Oficiálny repozitár CentOS 7 nemusí obsahovať najnovší inštalačný balík pre Docker. V tejto časti budete inštalovať najnovšiu verziu Dockera z oficiálneho repozitára Docker. Najprv musíte aktualizovať databázu balíkov pomocou:
|
1 |
sudo yum check-update |
Po dokončení kroku aktualizácie spustite nižšie uvedený príkaz na stiahnutie a inštaláciu najnovšej verzie Dockera:
|
1 |
curl -fsSL https://get.docker.com/ | sh |
Docker je teraz nainštalovaný, takže môžete spustiť démona Docker spustením nižšie uvedeného príkazu:
|
1 |
sudo systemctl start docker |
Ak chcete overiť, či démon Docker beží, zadajte nasledovné:
|
1 |
sudo systemctl status docker |
Výstup príkazu systemctl status by mal byť podobný nižšie zdieľanému výstupu, ktorý ukazuje, že beží:
|
1 2 3 4 5 6 |
Output: ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Active: active (running) since Wed 2021-02-17 18:22:06 UTC; 10s ago Docs: https://docs.docker.com Main PID: 21884 (dockerd) |
Nakoniec, aby ste sa uistili, že sa Docker spustí pri reštarte počítača, použite príkaz:
|
1 |
sudo systemctl enable docker |
Inštalácia Dockera vám poskytne službu Docker, ako aj klientsky nástroj (klientsky príkazový riadok Docker). V nasledujúcich častiach návodu si budete môcť vyskúšať prácu s príkazmi Docker v praxi.
Môžete si tiež pozrieť náš podrobný návod, ako nainštalovať & prevádzkovať Docker na Ubuntu vo verejnom cloude.
Krok 2: Používanie príkazov Docker bez predpony Sudo
Príkazy Docker vyžadujú na spustenie oprávnenia root. Ak teda chcete spustiť príkazy, budete pred ne musieť pridať predponu sudo. Počas inštalácie sa predvolene vytvorí skupina Docker. Ak pridáte používateľa do tejto skupiny, môžete spúšťať príkazy Docker bez sudo. Pokus o spustenie príkazov Docker bez sudo alebo bez pridania používateľa do skupiny bude mať za následok výstup podobný nižšie uvedenému:
|
1 2 3 |
Output: docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?. See 'docker run --help'. |
Pridaním vášho používateľského mena do skupiny Docker zabezpečíte, že na spúšťanie príkazov Docker nebudete musieť používať sudo:
|
1 |
sudo usermod -aG docker $(whoami) |
Ak chcete pridať iného používateľa do skupiny Docker, môžete jednoducho nahradiť používateľské meno v príkaze:
|
1 |
sudo usermod -aG docker username |
Vo zvyšku tejto príručky budeme predpokladať, že všetky príkazy vykonáva používateľ v skupine používateľov Docker. Ak tomu tak nie je, môžete s príkazmi použiť predponu sudo.
Krok 3: Spustenie príkazov Docker
Teraz, keď máte Docker nainštalovaný a spustený, pozrime sa na niekoľko príkazov, aby ste sa zoznámili s príkazovým riadkom Docker. Príkazy Docker majú zvyčajne túto formu:
|
1 |
docker [možnosť] [príkaz] [argumenty] |
Ak chcete nájsť všetky dostupné podpríkazy, mali by ste použiť:
|
1 |
docker |
K Docker 20.10.3, kompletný zoznam dostupných podpríkazov obsahuje:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
Výstup: attach Pripojiť lokálny štandardný vstup, výstup, a chybový toky k a spustenému kontajneru build Zostaviť an obraz z a Dockerfile commit Vytvoriť a nový obraz zo zmien kontajnera's changes cp Kopírovať súbory/priečinky medzi kontajnerom a lokálnym súborovým systémom create Vytvoriť nový kontajner diff Skontrolovať zmeny v súboroch alebo adresároch v súborovom systéme kontajneras filesystem events Získať udalosti v reálnom čase zo the servera exec Spustiť a príkaz v a spustenom kontajneri export Exportovať a súborový systém kontajnera's ako archív a tararchive history Zobraziť the históriu obrazuan image images Zoznam obrazov import Importovať the obsah z a tarballu na vytvorenie a obrazu súborového systému info Zobraziť informácie o celom -systémeinformation inspect Vrátiť nízkoúrovňové- informácie o objektoch Dockerobjects kill Zabiť jeden alebo viac spustených kontajnerov load Načítať an obraz z a archívu tar alebo STDIN STDIN login Prihlásiť sa do a Docker registra logout Odhlásiť sa z a Docker registra logs Získať the záznamy kontajnera a container pause Pozastaviť všetky procesy v jednom alebo viacerýchkontajnery port Zoznam portov mapovaní alebo a špecifického mapovania pre the kontajner ps Zoznam kontajnerov pull Stiahnuť an obraz alebo a depozitár z a registra push Odoslať an obraz alebo a depozitár do a registra rename Premenovať a kontajner restart Reštartovať jeden alebo viac kontajnerov rm Odstrániť jeden alebo viac kontajnerov rmi Odstrániť jeden alebo viac obrazov run Spustiť a príkaz v a novom kontajneri save Uložiť jeden alebo viac obrazov do a tar archívu (streamovaného na STDOUT v predvolenom nastavení) search Vyhľadať the Docker Hub na obrazy start Spustiť jeden alebo viac zastavených kontajnerov stats Zobraziť a živý stream of container(s) štatistík využitia zdrojov kontajnerov statistics stop Zastaviť jeden alebo viac bežiacich kontajnerov tag Vytvoriť a značku TARGET_IMAGE ktorá odkazuje na SOURCE_IMAGE top Zobraziť the bežiace procesy of a kontajnera unpause Obnoviť všetky procesy v jednom alebo viac kontajneroch update Aktualizovať konfiguráciu of jedného alebo viac kontajnerov version Zobraziť the Docker informácie o verzii wait Blokovať kým jeden alebo viac kontajnerov nezastaví, , potom vytlačiť ich návratové kódy |
Na získanie ďalších informácií o konkrétnom príkaze môžete použiť príznak –help:
|
1 |
docker subcommand --help |
Ak chcete získať podrobné informácie o systéme, použite:
|
1 |
docker info |
Krok 4: Práca s obrazmi Docker
Obrazy Docker možno označiť za predlohu pre kontajnery Docker. Tieto obrazy sa zvyčajne sťahujú z Docker Hub, čo je register spravovaný projektom Docker. Ktokoľvek môže vytvárať a nahrávať svoje obrazy na Docker Hub. Vďaka tomu môžete v registri ľahko nájsť širokú škálu aplikácií a distribúcií operačných systémov. Vyskúšajme si jednoduchý program, ktorý potvrdí prístup k Docker Hubu:
|
1 |
docker run hello-world |
Mali by ste dostať výstup ako nižšie, ktorý ukazuje, že Docker funguje:
|
1 2 3 4 |
Výstup: Hello from Docker! Táto správa ukazuje, že vaša inštalácia sa zdá byť be funkčná správne. ... |
Rôzne obrazy Docker môžete na Docker Hube nájsť pomocou príkazu search. Pozrite si napríklad nižšie uvedený príkaz na vyhľadanie obrazu CentOS:
|
1 |
docker search centos |
Vyhľadávací dopyt zobrazí zoznam všetkých obrazov, ktoré sa zhodujú s podreťazcom. Vo vašom prípade by mal byť výstup nasledujúci:
|
1 2 3 4 5 6 7 8 |
Výstup: NÁZOV POPIS STARS OFFICIAL AUTOMATED centos Oficiálna verzia CentOSof CentOS. 6410 [OK] ansible/centos7-ansible Ansible na Centos7 132 [OK] consol/centos-xfce-vnc Centos kontajner s "headless" VNC sess… 125 [OK] jdeathe/centos-ssh OpenSSH / Supervisor / EPEL/IUS/SCL Repozitáre… 117 [OK] centos/systemd systemd povolený základný kontajner. 96 [OK] ... |
Vo výsledkoch vyhľadávania sú rôzne stĺpce popisujúce informácie o obraze. OK v stĺpci OFFICIAL určuje, že obraz bol vytvorený a je podporovaný spoločnosťou, ktorá stojí za aplikáciou. Keď sa rozhodnete pre konkrétny obraz, môžete si ho stiahnuť do svojho lokálneho počítača pomocou príkazu Docker pull:
|
1 |
docker pull centos |
Po stiahnutí obrazu môžete spustiť kontajner pomocou príkazu Docker run. Ak sa pokúsite priamo spustiť obraz bez predchádzajúceho stiahnutia, Docker obraz najskôr stiahne a následne kontajner spustí:
|
1 |
docker run centos |
Zoznam obrazov stiahnutých do vášho lokálneho počítača môžete zobraziť pomocou nasledujúceho príkazu:
|
1 |
docker images |
Mali by ste dostať podobný výstup:
|
1 2 3 4 |
Výstup: REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 300e315adb2f 2 mesiacmi dozadu 209MB hello-world latest bf756fb1ae65 13 mesiacmi dozadu 13.3kB |
Neskôr v tomto návode budete môcť upravovať obrazy na spúšťanie kontajnerov. Tieto nové obrazy môžu byť pridané alebo odoslané (pushed) do Docker Hubu a iných registrov, ktoré hostujú Docker obrazy.
Krok 5: Interaktívne spustenie kontajnera
Existujú rôzne typy kontajnerov. Kontajner hello-world, ktorý ste spustili v Kroku 4 je typ kontajnera, ktorý sa spustí a po vypísaní správy sa ukončí. Ďalším typom kontajnera je interaktívny kontajner. Interaktívne kontajnery môžete používať podobným spôsobom ako virtuálny stroj.
Vytvorme kontajner z najnovšieho obrazu CentOS. Použitie príznakov -i a -t v príkaze Docker run poskytne interaktívny prístup ku kontajneru CentOS:
|
1 |
docker run -it centos |
Príkazový riadok sa zmení a mal by vyzerať ako výstup nižšie:
|
1 2 |
Výstup: [root@3ce69d2a35b9 /]# |
|
1 |
Poznámka: ID kontajnera zobrazené v príkazovom riadku je jedinečné a neskôr sa bude hodiť, v tomto príklade je , to the example it is 3ce69d2a35b9. |
Teraz sa akýkoľvek príkaz, ktorý vykonáte, spustí vo vnútri kontajnera. To je podobné ako spustenie príkazu vo virtuálnom stroji. Skúsme nainštalovať MySQL server v kontajneri CentOS. Môžete to urobiť pomocou:
|
1 |
yum install mysql |
Krok 6: Uloženie zmien v kontajneri do Docker obrazu
Po spustení kontajnera môžete vykonávať všetky operácie, ktoré sú uskutočniteľné v podobnom virtuálnom stroji, ako je vytváranie/úprava súborov alebo nastavenie aplikácie. Upozorňujeme, že tieto zmeny zostanú iba v tomto kontajneri a po zničení kontajnera sa vykonané zmeny stratia.
V tejto časti návodu sa naučíte, ako vytvoriť nový Docker obraz z kontajnera s vykonanými zmenami. Po Kroku 5 máte spustený kontajner CentOS s nainštalovaným MySQL serverom. Tento kontajner sa teraz líši od čistého obrazu CentOS. Tento stav kontajnera si môžete uložiť na ďalšie použitie. Najprv musíte kontajner ukončiť pomocou:
|
1 |
exit |
Uložte (commitnite) zmeny, ktoré ste v kontajneri vykonali, do nového Docker obrazu pomocou príkazu nižšie:
|
1 |
docker commit -m "Zmeny vykonané v obraze" -a "Meno autora" container-id repository/new_image_name |
V príkaze -m označuje správu o uložení (commit message) a mala by v zásade popisovať vykonané zmeny, tag -a sa používa na uvedenie autora. Container-id je ID z Kroku 5, ktoré ste získali po spustení kontajnera v interaktívnom režime, a repozitár (repository) je zvyčajne vaše používateľské meno pre Docker Hub. Napríklad:
|
1 |
docker commit -m "added mysql-server" -a "CloudSigma" 59839a1b7de2 finid/centos-mariadb |
|
1 |
Poznámka: Po tom, ako je nový obraz uložený, je uložený vo vašom systéme. . V ďalších fázach tohto návodu sa naučíte, , ako nahrať obraz na Docker Hub a do podobných registrov, ktoré hostujú docker obrazy. Po odoslaní vášho obrazu do registra . k nemu môžu pristupovať aj ostatní používatelia tak , isto. can be accessed by others as well. |
Teraz, keď je obraz uložený, príkaz docker images by mal zobraziť nový obraz, ako aj tie staré:
|
1 |
docker images |
Výstup príkazu by mal byť podobný tomuto:
|
1 2 3 4 5 |
Výstup: REPOSITORY TAG IMAGE ID VYTVORENÉ VEĽKOSŤ cloudsigma23/centos-mysql latest 1b9368efea70 13 sekúnd predtým 308MB centos latest 300e315adb2f 2 mesiacov predtým 209MB hello-world latest bf756fb1ae65 13 mesiacov predtým 13.3kB |
Ako vidno v príklade, nový obraz centos-mysql je vytvorený pomocou obrazu CentOS z Docker Hubu. Rozdiel vo veľkosti určuje, že boli vykonané určité zmeny. V tomto príklade to bolo pridanie MySQL servera do kontajnera. Nabudúce, ak budete potrebovať kontajner s MySQL serverom, stačí spustiť nový obraz a voila! Máte spustený kontajner CentOS s predinštalovaným MySQL serverom.
Krok 7: Správa Docker kontajnerov
Teraz, keď ste sa už s Dockerom oboznámili, po nejakom čase používania už máte nejaké spustené a nejaké neaktívne kontajnery. Ak chcete získať zoznam aktívnych kontajnerov, mali by ste použiť:
|
1 |
docker ps |
Mali by ste vidieť podobný výstup:
|
1 2 3 |
Výstup: CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 604c889cf404 centos "/bin/bash" 20 minút dozadu Up 20 minút intelligent_easley |
Ak chcete zobraziť zoznam aktívnych aj neaktívnych kontajnerov, mali by ste použiť príznak -a s príkazom:
|
1 |
docker ps -a |
Ak chcete nájsť posledný vytvorený kontajner, môžete použiť príznak -l:
|
1 |
docker ps -l |
Ak chcete zastaviť spustený/aktívny kontajner, spustite jednoduchý príkaz:
|
1 |
docker stop container-id |
ID kontajnera (container-id) nájdete vo výstupe príkazu Docker ps.
Krok 8: Publikovanie obrazov do repozitára
Ďalším krokom po vytvorení nového obrazu je jeho zdieľanie s vašimi priateľmi. Môžete ho tiež sprístupniť celému svetu pomocou Docker Hub alebo akéhokoľvek iného registra. Pred odoslaním (push) obrazu sa musíte prihlásiť do príslušného registra.
V ďalšej časti návodu sa dozviete, ako odoslať (push) obrazy do Docker Hub. Najprv sa zaregistrujte na Docker Hub. Na odoslanie obrazu sa budete musieť prihlásiť do Docker Hub pomocou príkazu nižšie:
|
1 |
docker login -u docker-registry-username |
Po zadaní správneho hesla a úspešnom overení môžete svoj obraz odoslať. Na odoslanie obrazu použite nasledujúci príkaz:
|
1 |
docker push docker-registry-username/docker-image-name |
Výstup príkazu bude podobný tomuto:
|
1 2 3 4 5 |
Výstup: The push refers to repository [docker.io/cloudsigma23/centos-mysql] ee30e80cbcc5: Pushed 2653d992f4ef: Mounted from library/centos ... |
Po odoslaní obrazu by sa mal zobraziť na nástenke (dashboard) vášho účtu, ako je znázornené na obrázku nižšie:

V prípade zlyhania podobným spôsobom je pravdepodobné, že nie ste prihlásení:
|
1 2 3 4 5 6 7 |
Výstup: The push refers to repository [docker.io/cloudsigma23/centos-mysql] ee30e80cbcc5: Layer already exists 2653d992f4ef: Layer already exists errors: denied: requested access to the resource is denied unauthorized: authentication required |
Môžete sa prihlásiť a zopakovať pokus o odoslanie.
Záver
Existuje mnoho spôsobov, ako môžete Docker využiť. Tento návod by vám mal poskytnúť dostatok informácií na to, aby ste mohli začať. A keďže Docker je skutočne populárny projekt, veľa podrobností o jeho používaní, ako aj o rôznych prípadoch použitia nájdete na blogovej stránke projektu.
Môžete si tiež pozrieť naše ďalšie návody na Docker, aby ste sa dozvedeli viac o tom, čo všetko s ním môžete robiť:
- Vyčistenie prostriedkov Docker – obrazy, kontajnery a zväzky
- Nasadenie Laravel, Nginx a MySQL pomocou Docker Compose
- Spustenie vlastného VPN servera pod Dockerom s OpenVPN Access Server
Príjemnú prácu!
Komentáre
Zatiaľ žiadne komentáre. Buďte prvý.