V tomto návodu vám ukážeme, jak spravovat Docker kontejnery v systému Linux, stahovat image z Docker Hubu, vytvářet nové kontejnery a ukládat jejich image (obraz).
Pokud na svém serveru nemáte Docker, doporučujeme náš návod Jak nainstalovat Docker na Ubuntu 18.04
Stažení image
Kontejnery jsou tvořeny z tzv. image. Tyto image jsou stahovány z Docker Hubu, oficiální databáze.
Image může na Docker Hub nahrát kdokoliv. To umožňuje použít předem připravené image jako základ pro vaše aplikace.
Zadejte příkaz:
$ docker run centos
Docker vyhledá image "centos" v lokáním registru. Pokud jej nenajde (protože dosud nebyl stáhnut) Docker image automaticky stáhne z Docker Hubu a použije jej k sestavení kontejneru.
Použitý image neposkytuje žádný vizuální výstup, kontejner však můžete zobrazit příkazem:
$ docker ps
Pro zobrazení všech existujících kontejnerů, spuštěných i pozastavených, zadejte:
$ docker ps -a
Pro zobrazení seznamu stažených image zadejte:
$ docker images
Vytváření kontejnerů
Zkuste vytvořit kontejner pomocí image centos, který jste si stáhli v jednom z předchozích kroků:
$ docker run -it centos
Tag "-it" umožňuje přístup k shellu uvnitř kontejneru. Zobrazený shell není součástí vašeho operačního systému, nýbrž kontejneru: všechny příkazy budou provedeny na shellu OS uvnitř kontejneru (v tomto případě Ubuntu), nikoliv na shellu hostitele.
Pokud chcete opustit shell kontejneru a vrátit se do shellu hostitele, zadejte:
$ exit
Pro spuštění, zastavení nebo odstranění kontejneru zadejte:
$ 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 odstraněním kontejneru musí být ve stavu "stop".
Před zastavením kontejneru musí být ve stavu "run".
Kontejnery jsou izolovaná prostředí, proto jsou dle definice uzavřené. Chcete-li komunikovat s jejich obsahem, namapujte komunikační port.
$ docker run -p 8081:80 -d nginx
-
• “docker run”: příkaz pro spuštění kontejneru
-
• “-p 8081:80”: odkryje port 80 kontejneru na portu 8081 hostitele
-
• “-d”: spustit kontejner na pozadí
-
• “nginx”: image použitý k vytvoření kontejneru
Vytváření image z kontejnerů
Po vytvoření kontejneru a provedení úprav se doporučuje vytvoření relativního image: vše, co je vloženo do kontejneru (instalace dalších modulů a další úpravy) zůstává v kontejneru, nikoliv v image použitém pro vytvoření. Pokud bude kontejner odebrán a znovu vytvořen, nebude vykazovat žádné dříve provedené změny.
Například, pokud jste vytvořili kontejner s image CentOS a naistalovali Nginx, pokud jej nyní odstraníte a znovu vytvoříte, nebude obsahovat Nginx, jelikož použitý image jej neobsahuje.
Pro vytvoření image kontejneru, čímž vytvoříte i zálohu pro opětovné vytvoření kontejneru se stejnými parametry, použijte příkaz:
$ docker commit -m "List of changes made" -a "User name" container_id repository/image_name
-
• "-m" pro sestavení seznamu změn a získání protokolu, na který se odkazuje
-
• "-a" pro označení jména uživatele, který image generuje
Tento příkaz uloží image do místního registru. Je možné jej zobrazit pomocí Docker images.
Image může být uložen také v Docker Hubu. To lze provést tak, že se připojíte do Docker Hubu pomocí Dockeru (z shellu) zadáním:
$ docker login -u username
$ docker push username/image_name