Docker je softwarová platforma vyvinutá pro usnadnění nasazení aplikací založených na konceptu kontejnerů. Platformu lze použít k vytváření, testování a distribuci aplikací jejich shromažďováním ve standardizovaných jednotkách, nazývaných „kontejnery“.
Dockerové kontejnery lze považovat za izolovaná prostředí, kde lze aplikace spouštět bez zásahu jiných procesy. Podobně jako u virtuálních strojů jsou každému kontejneru přiděleny specifické výpočetní zdroje. Na rozdíl od virtuálních strojů Docker nevyžaduje žádnou emulaci hardwaru, ale pro každý kontejner používá fyzický hardware hostitele.
Kontejnerizaci lze považovat za přirozenou evoluci virtualizace, protože je efektivní z hlediska zdrojů a dokáže generovat lepší výkon systému. Navíc, protože obsahují vše potřebné pro správné spouštění aplikací – včetně knihoven, systémových nástrojů a kódů – kontejnery zjednodušují nasazení aplikace, aniž byste se museli starat o konfiguraci běhového prostředí.
V tomto tutoriálu se naučíte, jak nejlépe spravovat kontejnery Docker v systému Linux, stahovat obrázky z Docker Hub, vytvořit nový kontejner a uložit jeho obrázek.
Pokud platforma Docker není ve vašem systému přítomna, doporučujeme postupovat podle našeho průvodce Jak nainstalovat Docker na Ubuntu 18.04.
Stahování obrázků
Kontejnery jsou sestaveny z obrázků. Ve výchozím nastavení se tyto obrázky stahují z Docker Hub, registru oficiálních obrázků poskytovaných společností.
Kdokoli může hostovat své obrázky na Docker Hub. To umožňuje použití předem zabalených obrázků jako základu pro vaše aplikace.
Zkuste spustit příkaz:
$ docker run centos
Docker vyhledá obraz "centos" v místním registru. Pokud jej nenajde (protože dosud nebyl stažen), Docker jej stáhne z Docker Hub a vytvoří kontejner s tímto obrázkem.
Použitý obrázek neposkytuje žádný vizuální výstup, ale kontejner můžete vidět spuštěný pomocí příkazu:
$ docker ps
zobrazit všechny existující kontejnery, spuštěné i zastavené:
$ docker ps -a
Chcete-li zobrazit seznam stažených obrázků, zadejte:
$ docker images
Stavba kontejnerů
Kontejnery jsou podobné virtuálním strojům a jsou levnější z hlediska zdrojů.
Zkuste jej vytvořit pomocí dříve staženého obrázku centos:
$ docker run -it centos
Přepínač "-it" umožňuje přístup k shellu uvnitř kontejneru. Zobrazený shell nepochází z vašeho operačního systému, ale z kontejneru:všechny příkazy budou provedeny v shellu operačního systému přítomného uvnitř kontejneru (v tomto případě Ubuntu), a ne v hostitelském shellu.
Chcete-li opustit shell kontejneru a vrátit se do shellu hostitele, zadejte:
$ exit
Spuštění, zastavení nebo odstranění kontejneru:
$ docker start ID_or_container_name
$ docker stop ID_or_container_name
$ docker rm ID_or_container_name
Před spuštěním nebo smazáním kontejneru musí být ve stavu „stop“.
Před zablokováním kontejneru musí být ve stavu „spustit“.
Kontejnery jsou izolovaná prostředí, a proto jsou z definice "uzavřené". Pro interakci s jejich „obsahem“ namapujte komunikační port.
$ docker run -p 8081:80 -d nginx
„docker run“:příkaz spuštění kontejneru.
“-p 8081:80“:odkryje port kontejneru 80 na portu 8081 hostitele.
Pokud se jedná o kontejner, který hostí webový server, přistupte k němu pomocí "localhost:8081".
„-d“:spuštění kontejneru na pozadí.
„nginx“:obrázek použitý k sestavení kontejneru.
Pokud obrázek není přítomen místně, stáhne se z Docker Hub.
Obrázky sestavení kontejnerů
Po vytvoření kontejneru a nezbytných „přizpůsobení“ se doporučuje vytvoření relativního obrázku:vše, co je vloženo do kontejneru (instalace dalších modulů nebo jiných přizpůsobení), zůstane v kontejneru a ne v obrázek použitý pro stavbu. Pokud kontejner odstraníte a znovu vytvoříte, nezobrazí se žádné ze změn provedených do tohoto okamžiku.
Předpokládejme, že jste vytvořili kontejner s obrazem CentOS a nainstalovali Nginx. Pokud kontejner odstraníte a znovu jej vytvoříte s obrazem ubuntu, nebudete mít v kontejneru Nginx, protože jej použitý obraz neobsahuje.
Chcete-li vygenerovat obraz kontejneru (a mít zálohu pro opětovné vytvoření kontejneru se stejnými podmínkami), spusťte příkaz:
$ docker commit -m "List of changes made" -a "User name" container_id repository/image_name
"-m" se používá k zápisu seznamu změn, aby se získal protokol, na který se lze odkazovat
"-a" se používá k označení jména uživatele, který generuje obrázek
Tento příkaz uloží bitovou kopii do místního registru (lze jej zobrazit prostřednictvím obrázků dockeru).
Obrázek lze také uložit na Docker Hub. To lze provést tak, že se nejprve ověříte na Docker Hub pomocí Dockeru (z prostředí shell), zadáním:
$ docker login -u username
Budete požádáni o zadání hesla pro ověření na Docker Hub
$ docker push username/image_name