Úvod
Docker je platforma, která usnadňuje spouštění a správu aplikačních procesů v kontejnerech. Poskytuje způsob, jak oddělit vaše aplikace od vaší infrastruktury. Kontejnery jsou velmi podobné virtuálním strojům, ale jsou přenosnější, efektivnější a snadněji se používají. Existují různé způsoby, jak nainstalovat Docker na Linux distribuce. Nejpopulárnější a nejjednodušší způsob, jak nainstalovat Docker na stávající operační systém, je pomocí příkazů yum.
Tento návod vám ukáže, jak můžete nastavit a používat Docker na CentOS 7 v několika jednoduchých krocích.
Požadavky:
- 64bitová instance CentOS 7.
- Uživatel bez oprávnění root s právy sudo.
Všechny příkazy, které v tomto návodu provedete, jsou spouštěny pod uživatelem bez oprávnění root, a pokud to bude nutné, přístup root bude zajištěn pomocí klíčového slova sudo.
Krok 1: Nastavení Dockeru na instanci CentOS 7
Oficiální repozitář CentOS 7 nemusí obsahovat nejnovější instalační balíček pro Docker. V této části budete instalovat nejnovější verzi Dockeru z oficiálního repozitáře Dockeru. Nejprve musíte aktualizovat databázi balíčků pomocí:
|
1 |
sudo yum check-update |
Po dokončení kroku aktualizace spusťte níže uvedený příkaz ke stažení a instalaci nejnovější verze Dockeru:
|
1 |
curl -fsSL https://get.docker.com/ | sh |
Docker je nyní nainstalován, takže můžete spustit démona Docker spuštěním níže uvedeného příkazu:
|
1 |
sudo systemctl start docker |
Chcete-li ověřit, zda démon Docker běží, zadejte následující:
|
1 |
sudo systemctl status docker |
Výstup příkazu systemctl status by měl být podobný níže sdílenému výstupu, který ukazuje, že běží:
|
1 2 3 4 5 6 |
Výstup: ● 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) |
Nakonec, abyste se ujistili, že se Docker spustí při restartu počítače, použijte příkaz:
|
1 |
sudo systemctl enable docker |
Instalace Dockeru vám poskytne službu Docker a také klientský nástroj (příkazový řádek Dockeru). V dalších částech návodu si budete moci vyzkoušet práci s příkazy Dockeru v praxi.
Můžete se také podívat na náš podrobný návod, jak nainstalovat & provozovat Docker na Ubuntu ve veřejném cloudu.
Step 2: Používání příkazů Dockeru bez předpony Sudo
Příkazy Dockeru vyžadují ke spuštění oprávnění root. Pokud tedy chcete příkazy spustit, budete před ně muset přidat předponu sudo. Během instalace se ve výchozím nastavení vytvoří skupina Docker. Pokud do této skupiny přidáte uživatele, můžete spouštět příkazy Dockeru bez sudo. Pokus o spuštění příkazů Dockeru bez sudo nebo bez přidání uživatele do skupiny povede k výstupu podobnému tomuto:
|
1 2 3 |
Výstup: docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?. See 'docker run --help'. |
Předcházením vašeho uživatelského jména do skupiny Docker zajistíte, že pro spouštění příkazů Dockeru nebudete muset používat sudo:
|
1 |
sudo usermod -aG docker $(whoami) |
Chcete-li do skupiny Docker přidat jiného uživatele, můžete jednoduše nahradit uživatelské jméno v příkazu:
|
1 |
sudo usermod -aG docker username |
Ve zbytku této příručky budeme předpokládat, že všechny příkazy jsou spouštěny uživatelem ve skupině uživatelů Docker. Pokud tomu tak není, můžete s příkazy použít předponu sudo.
Krok 3: Spuštění příkazů Dockeru
Nyní, když máte Docker nainstalovaný a spuštěný, podívejme se na některé příkazy, abychom se seznámili s nástrojem příkazové řádky Dockeru. Příkazy Dockeru mají obvykle následující podobu:
|
1 |
docker [volba] [příkaz] [argumenty] |
Chcete-li najít všechny dostupné podpříkazy, měli byste použít:
|
1 |
docker |
K verzi Docker 20.10.3 obsahuje kompletní seznam dostupných podpříkazů:
|
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 Připojit lokální standardní vstup, výstup, a chybový proudy ke a spuštěnému kontejneru build Sestavit an obraz z a Dockerfile commit Vytvořit a nový obraz ze změn kontejneru's changes cp Kopírovat soubory/složky mezi kontejnerem a lokálním souborovým systémem create Vytvořit nový kontejner diff Zkontrolovat změny souborů nebo adresářů v souborovém systému kontejnerus filesystem events Získat události v reálném čase ze serveruserver exec Spustit a příkaz ve spuštěném kontejnerucontainer export Exportovat souborový systém'kontejneru jakoarchiv tar tar archive history Zobrazit historii obrazuof an image images Vypsat seznam obrazů import Importovat obsah z archivu tar (tarball) pro vytvoření obrazu souborového systému info Zobrazit informace -o celém systému inspect Vrátit nízkoúrovňové-informaceoobjektechDockeruobjects kill Ukončit jeden nebo více spuštěných kontejnerů load Načíst obraz z archivu tar nebo ze STDIN STDIN login Přihlásit se k registru Dockeruregistry logout Odhlásit se z registru Dockeruregistry logs Získat protokoly (logy) kontejneru a container pause Pozastavit všechny procesy v jednom nebo více kontejnery port Zobrazit mapování portů nebo a specifické mapování pro the kontejner ps Zobrazit kontejnery pull Stáhnout an obraz nebo a repozitář z a registru push Odeslat an obraz nebo a repozitář do a registru rename Přejmenovat a kontejner restart Restartovat jeden nebo více kontejnerů rm Odstranit jeden nebo více kontejnerů rmi Odstranit jeden nebo více obrazů run Spustit a příkaz v a novém kontejneru save Uložit jeden nebo více obrazů do a tar archivu (streamovaného na STDOUT ve výchozím nastavení) search Vyhledat the Docker Hub na obrazy start Spustit jeden nebo více zastavených kontejnerů stats Zobrazit a živý proud statistik využití (prostředků ) kontejnerů usage statistics stop Zastavit jeden nebo více běžících kontejnerů tag Vytvořit a značku TARGET_IMAGE která odkazuje na SOURCE_IMAGE top Zobrazit the běžící procesy v a kontejneru unpause Obnovit všechny procesy v jednom nebo více kontejnerech update Aktualizovat konfiguraci of jednoho nebo více kontejnerů version Zobrazit informace o verzi Dockeruinformation wait Blokovat dokud jeden nebo více kontejnerů se nezastaví, , pak vypsat jejich návratové kódy |
Pro získání více informací o konkrétním příkazu můžete použít příznak –help:
|
1 |
docker subcommand --help |
Chcete-li získat podrobné informace o systému, použijte:
|
1 |
docker info |
Krok 4: Práce s obrazy Dockeru
Obrazy Dockeru lze označit za šablonu pro kontejnery Dockeru. Tyto obrazy se obvykle stahují z Docker Hubu, což je registr spravovaný projektem Docker. Kdokoli může vytvářet a nahrávat své obrazy na Docker Hub. Díky tomu v registru snadno najdete širokou škálu aplikací a distribucí operačních systémů. Vyzkoušejme si jednoduchý program, který potvrdí přístup k Docker Hubu:
|
1 |
docker run hello-world |
Měli byste obdržet níže uvedený výstup, který ukazuje, že Docker funguje:
|
1 2 3 4 |
Výstup: Hello from Docker! Tato zpráva ukazuje, že vaše instalace se zdá fungovat správněworking correctly. ... |
Různé obrazy Dockeru můžete na Docker Hubu vyhledat pomocí příkazu search. Podívejte se například na níže uvedený příkaz pro vyhledání obrazu CentOS:
|
1 |
docker search centos |
Vyhledávací dotaz zobrazí seznam všech obrazů, které odpovídají hledanému řetězci. Ve vašem případě by měl výstup vypadat takto:
|
1 2 3 4 5 6 7 8 |
Výstup: NÁZEV POPIS HVĚZDY OFICIÁLNÍ AUTOMATICKÝ centos Oficiální sestavení systému CentOSCentOS. 6410 [OK] ansible/centos7-ansible Ansible na Centos7 132 [OK] consol/centos-xfce-vnc Centos kontejner s "headless" VNC sess… 125 [OK] jdeathe/centos-ssh OpenSSH / Supervisor / EPEL/IUS/SCL Repozitáře… 117 [OK] centos/systemd systemd povolený základní kontejner. 96 [OK] ... |
Ve výsledcích vyhledávání jsou různé sloupce popisující informace o obrazu. OK ve sloupci OFFICIAL určuje, že obraz byl vytvořen a je podporován společností, která za aplikací stojí. Jakmile si vyberete finální obraz, můžete jej stáhnout do svého lokálního počítače pomocí příkazu Docker pull:
|
1 |
docker pull centos |
Po stažení obrazu můžete spustit kontejner pomocí příkazu Docker run. Pokud se pokusíte přímo spustit obraz bez předchozího stažení, Docker obraz nejprve stáhne a poté kontejner spustí:
|
1 |
docker run centos |
Seznam obrazů stažených do vašeho lokálního počítače můžete zobrazit pomocí následujícího příkazu:
|
1 |
docker images |
Měli byste získat podobný výstup:
|
1 2 3 4 |
Výstup: REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 300e315adb2f 2 měsíci zpět 209MB hello-world latest bf756fb1ae65 13 měsíci zpět 13.3kB |
Později v tomto návodu budete moci upravovat obrazy pro spouštění kontejnerů. Tyto nové obrazy lze přidat nebo nahrát na Docker Hub a další registry, které hostují Docker obrazy.
Step 5: Running a Container Interactively
There are different types of containers. The hello-world container you ran in Step4 is a type of container which runs and exits after printing a message. Another type of container is the interactive one. You can use interactive containers in a similar fashion as a virtual machine.
Vytvořme kontejner z nejnovějšího obrazu CentOS. Použití přepínačů -i a -t v příkazu Docker run poskytne interaktivní přístup ke kontejneru CentOS:
|
1 |
docker run -it centos |
Příkazový řádek se změní a měl by vypadat jako výstup níže:
|
1 2 |
Výstup: [root@3ce69d2a35b9 /]# |
|
1 |
Poznámka: ID kontejneru zobrazené v příkazovém řádku je unikátní a bude se vám později hodit, in handy afterwards, v tomto příkladu je to 3ce69d2a35b9. |
Nyní se jakýkoli příkaz, který provedete, spustí uvnitř kontejneru. To je podobné jako spuštění příkazu ve virtuálním stroji. Zkusme nainstalovat MySQL server v kontejneru CentOS. Můžete to provést pomocí:
|
1 |
yum install mysql |
Krok 6: Uložení změn v kontejneru do obrazu Dockeru
Po spuštění kontejneru můžete provádět všechny operace, které lze provádět v podobném virtuálním stroji, jako je vytváření/úprava souborů nebo nastavení aplikace. Upozorňujeme, že tyto změny zůstanou pouze v tomto kontejneru a po zničení kontejneru budou provedené změny ztraceny.
V této části návodu se dozvíte, jak vytvořit nový Docker obraz z kontejneru s provedenými změnami. Po Kroku 5 máte spuštěný kontejner CentOS s nainstalovaným MySQL serverem. Tento kontejner se nyní liší od čistého obrazu CentOS. Tento stav kontejneru si můžete uložit pro další použití. Nejprve musíte kontejner opustit pomocí:
|
1 |
exit |
Uložte (commit) změny, které jste v kontejneru provedli, do nového Docker obrazu pomocí níže uvedeného příkazu:
|
1 |
docker commit -m "Změny provedené v obrazu" -a "Jméno autora" container-id repository/new_image_name |
V příkazu odkazuje -m na zprávu o uložení (commit message) a měla by v zásadě označovat provedené změny, tag -a se používá k uvedení autora. Container-id je ten z Step5, který jste získali po spuštění kontejneru v interaktivním režimu, a repozitář (repository) je obvykle vaše uživatelské jméno pro Docker Hub. Například:
|
1 |
docker commit -m "přidán mysql-server" -a "CloudSigma" 59839a1b7de2 finid/centos-mariadb |
|
1 |
Poznámka: Po the novém obrazu je uložen je uložen na vašem systémusystém. V the dalších fázích of tohoto návodu , se dozvíte learn jak to odeslat an obraz na Docker Hub a v the podobných registrech, které hostují docker obrazy. Jakmile váš obraz je odeslán do the registru, , k němu mohou přistupovat i ostatnítaké well. |
Nyní, když je obraz uložen (committed), příkaz docker images by měl vypsat nový obraz i ty staré:
|
1 |
docker images |
Výstup příkazu by měl být podobný tomuto:
|
1 2 3 4 5 |
Výstup: REPOSITORY TAG IMAGE ID CREATED SIZE cloudsigma23/centos-mysql latest 1b9368efea70 13 sekund zpět 308MB centos latest 300e315adb2f 2 měsíci zpět 209MB hello-world latest bf756fb1ae65 13 měsíci zpět 13.3kB |
Jak je vidět v příkladu, nový obraz centos-mysql je vytvořen pomocí obrazu CentOS z Docker Hubu. Rozdíl ve velikosti určuje, že byly provedeny určité změny. V tomto příkladu to bylo přidání MySQL serveru do kontejneru. Příště, až budete potřebovat kontejner s MySQL serverem, stačí spustit nový obraz a voilà! Máte spuštěný kontejner CentOS s předinstalovaným MySQL serverem.
Krok 7: Správa Docker kontejnerů
Nyní, když jste se seznámili s Dockerem, po nějaké době používání již máte spuštěné i neaktivní kontejnery. Chcete-li získat seznam aktivních kontejnerů, měli byste použít:
|
1 |
docker ps |
Měli byste vidět podobný výstup:
|
1 2 3 |
Výstup: CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 604c889cf404 centos "/bin/bash" 20 minut zpět Běží 20 minut intelligent_easley |
Chcete-li zobrazit seznam aktivních i neaktivních kontejnerů, měli byste s příkazem použít příznak -a:
|
1 |
docker ps -a |
Chcete-li najít poslední vytvořený kontejner, můžete použít příznak -l:
|
1 |
docker ps -l |
Chcete-li zastavit běžící/aktivní kontejner, spusťte jednoduchý příkaz:
|
1 |
docker stop container-id |
ID kontejneru (container-id) najdete ve výstupu příkazu Docker ps.
Krok 8: Publikování obrazů do repozitáře
Dalším krokem po vytvoření nového obrazu je jeho sdílení s přáteli. Můžete jej také zpřístupnit celému světu pomocí Docker Hubu nebo jakéhokoli jiného registru. Před nahráním (push) obrazu je nutné se přihlásit do příslušného registru.
V další části návodu se dozvíte, jak nahrát obrazy na Docker Hub. Nejprve se zaregistrujte na Docker Hubu. Chcete-li nahrát svůj obraz, budete se muset přihlásit do Docker Hubu pomocí níže uvedeného příkazu:
|
1 |
docker login -u docker-registry-username |
Jakmile zadáte správné heslo a ověření proběhne úspěšně, můžete svůj obraz nahrát. K nahrání obrazu použijte níže uvedený příkaz:
|
1 |
docker push docker-registry-username/docker-image-name |
Výstup pří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 ... |
Jakmile obraz nahrajete, měl by se zobrazit na nástěnce vašeho účtu, jak je znázorněno na obrázku níže:

V případě selhání podobným způsobem je pravděpodobné, že nejste přihlášeni:
|
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 se přihlásit a pokus o nahrání opakovat.
Závěr
Existuje celá řada způsobů, jak můžete Docker využít. Tento návod by vám měl poskytnout dostatek informací pro začátek. A protože Docker je opravdu populární projekt, mnoho podrobností o jeho použití i o různých případech užití najdete na blogové stránce projektu.
Můžete se také podívat na naše další návody k Dockeru, abyste se dozvěděli více o tom, co s ním můžete dělat:
- Vyčištění prostředků Dockeru – obrazy, kontejnery a svazky
- Nasazení Laravelu, Nginx a MySQL pomocí Docker Compose
- Spusťte si vlastní VPN server v Dockeru s OpenVPN Access Serverem
Přejeme příjemnou práci s počítačem!
Komentáře
Zatím žádné komentáře. Buďte první.