Tento kurz pokračuje v sérii článků souvisejících s Dockerem a pokrývá nejčastěji používané příkazy Dockeru. Začínáme stručným přehledem Dockeru a poté přejdeme k instalaci Dockeru na váš server. Dále vás provedeme všemi požadovanými příkazy pro správu kontejnerů, obrázků a svazků Docker. Staňte se profesionálním uživatelem Dockeru podle tohoto průvodce za 10 minut.
Co je Docker
Docker je otevřená platforma pro vývoj, odesílání a provoz aplikací. Je to de facto standard pro balení a sdílení aplikací – od desktopu po cloud.
K dosažení svého cíle používá Docker kontejnery.
Kontejner má následující vlastnosti:
- Kontejner je balíček pro software a všechny požadované knihovny.
- Jakmile je spuštěn, kontejner určí běhové prostředí pro vaši aplikaci.
- Kontejner je lehčí než virtuální počítač, takže jej lze spustit mnohem rychleji.
- Kontejner je distribuován ve formě obrázku, který se skládá z několika vrstev. Tyto vrstvy může znovu použít více kontejnerů.
Výše uvedené funkce vám umožňují:
- Vytvářejte izolovaná prostředí pro nasazení.
- Spusťte své aplikace během několika minut.
Docker vám pomůže zjednodušit a automatizovat každý krok procesu vývoje softwaru.
Zde jsou základní funkce Dockeru:
- Docker má obrovskou komunitu.
- Docker je jednoduchý a lehký způsob distribuce softwaru.
- Docker má obří veřejné úložiště kontejnerů pro všechny možné účely.
- Docker snižuje náklady na vývoj a provoz.
- Konfigurace dockeru je přímočará a rychlá.
- Docker poskytuje izolaci aplikací.
- Obrázek Dockeru má vrstvy, které mají kontrolu verzí.
- Docker automatizuje každý krok správy kontejnerů.
Docker můžete nainstalovat na operační systémy Linux, macOS a Windows.
Instalovat Docker
Tato část popisuje, jak nainstalovat balíček Docker CE (community edition) v operačním systému Linux.
Pokud používáte cloud AWS, navrhuji článek o automatické instalaci Dockeru do instance EC2 pomocí CloudFormation.
Instalovat Docker na Ubuntu/Debian
Ve výchozím nastavení výchozí úložiště Ubuntu nebo Debianu neobsahuje nejnovější verzi balíčku Docker CE. Budete tedy muset do svého systému přidat oficiální úložiště Docker CE.
Před přidáním úložiště nainstalujte některé požadované závislosti spuštěním následujícího příkazu:
apt-get install apt-transport-https ca-certificates curl software-properties-common curl -y
Po instalaci všech závislostí importujte klíč Docker GPG pomocí následujícího příkazu;
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
Dále přidejte oficiální úložiště Docker CE do zdrojového souboru APT pomocí následujícího příkazu:
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
Jakmile bude úložiště přidáno, budete muset aktualizovat mezipaměť úložiště. Můžete jej aktualizovat pomocí následujícího příkazu:
apt-get update -y
Jakmile bude vaše úložiště aktuální, spusťte následující příkaz k instalaci nejnovější verze Docker CE do vašeho systému.
apt-get install docker-ce -y
Výše uvedený příkaz nainstaluje balíček Docker CE do vašeho systému a automaticky spustí službu.
Nainstalovanou verzi Docker CE můžete ověřit spuštěním následujícího příkazu:
docker --version
V následujícím výstupu byste měli vidět verzi Docker:
Docker version 19.03.13, build 4484c46d9d
Pokud chcete odebrat balíček Docker ze systému, spusťte následující příkaz:
apt-get remove docker-ce
Instalovat Docker na CentOS/RHEL
Pro operační systém CentOS nebo RHEL budete muset do svého systému nainstalovat úložiště Docker CE. K přidání a povolení úložiště Docker CE můžete použít příkaz DNF, jak je znázorněno níže:
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
Po přidání úložiště Docker CE můžete spustit seznam všech dostupných verzí Docker CE spuštěním následujícího příkazu:
dnf list docker-ce --showduplicates | sort -r
Úplný seznam byste měli získat v následujícím výstupu:
docker-ce.x86_64 3:19.03.13-3.el8 docker-ce-stable
Docker CE Stable - x86_64 54 kB/s | 3.8 kB 00:00
CentOS-8 - Extras 14 kB/s | 8.1 kB 00:00
CentOS-8 - Base 4.6 MB/s | 2.2 MB 00:00
CentOS-8 - AppStream 4.7 MB/s | 5.8 MB 00:01
Available Packages
Dále nainstalujte nejnovější verzi Docker CE spuštěním následujícího příkazu:
dnf install docker-ce --nobest
Jakmile je Docker nainstalován, ověřte nainstalovanou verzi pomocí následujícího příkazu:
docker --version
Měli byste získat následující výstup:
Docker version 19.03.13, build 4484c46d9d
Chcete-li spustit službu Docker, spusťte následující příkaz:
systemctl start docker
Chcete-li zastavit službu Docker, spusťte následující příkaz:
systemctl stop docker
Chcete-li zobrazit další informace o Dockeru, můžete také spustit následující příkaz:
docker info
Měli byste vidět následující výstup:
Pokud chcete odebrat balíček Docker ze systému, spusťte následující příkaz:
dnf remove docker-ce
Správa kontejnerů pomocí Docker
docker container
příkaz se používá ke správě životního cyklu kontejneru. Pokud nemáte obrázek, ze kterého byste kontejner spustili, Docker přejde do registru a stáhne si jej.
Spustit kontejner Docker
Ke stažení bitové kopie z registru Docker a vytvoření kontejneru použijte následující syntaxi.
docker container run [your-image-name]
Spusťte například následující příkaz k vytvoření kontejneru webového serveru Apache:
docker container run httpd
Měli byste získat následující výstup:
Můžete použít možnost --rm
s příkazem Docker run k odstranění kontejneru po jeho ukončení.
docker container run --rm httpd
Připojit k Docker Container Shell
Můžete použít možnost -it
pomocí příkazu Docker run k vytvoření a spuštění kontejneru Apache a jeho připojení k interaktivnímu bash shellu.
docker container run -it httpd /bin/bash
Měli byste získat následující výstup:
Spustit kontejner Docker na pozadí
Nyní můžete v kontejneru spustit libovolný příkaz.
Můžete použít možnost -td
pomocí příkazu Docker run k vytvoření a spuštění kontejneru Apache a jeho udržení v chodu.
docker container run -td httpd
Měli byste získat následující výstup:
Nastavit název kontejneru dockeru
Můžete použít možnost --name
pomocí příkazu Docker run k přiřazení názvu kontejneru pomocí následující syntaxe:
docker container run --name [container-name] -td [image-name]
Vytvořte například nový kontejner z obrázku Apache a přiřaďte mu název apacheweb
pomocí následujícího příkazu:
docker container run --name apacheweb -td httpd
Navázat kontejner Docker na konkrétní port
Pokud chcete přistupovat k procesu kontejneru externího počítače, můžete port kontejneru vystavit externí síti.
V tomto případě můžete použít možnost -p
pomocí příkazu Docker pro zobrazení konkrétního portu, jak je znázorněno níže:
docker container run -p [host-port]:[container-port] --name [container-name] -dit [image-name]
Vytvořte například kontejner webového serveru Apache a vystavte port kontejneru 80 portu 8080 pomocí následujícího příkazu:
docker container run -p 8080:80 --name apacheweb -dt httpd
Nyní můžete přistupovat k webovému serveru Apache spuštěnému uvnitř kontejneru pomocí adresy URL http://localhost:8080 .
Vypsat všechny kontejnery Docker
Chcete-li zobrazit seznam všech spuštěných a zastavených kontejnerů ve vašem systému, spusťte následující příkaz:
docker ps -a
Všechny kontejnery byste měli vidět v následujícím výstupu:
Chcete-li vypsat pouze spuštěné kontejnery ve vašem systému, spusťte následující příkaz:
docker ps
Kontejner můžete také vypsat pomocí následujícího příkazu:
docker container ls
Zobrazit statistiky kontejneru dockeru
Chcete-li zobrazit živé statistiky běžícího kontejneru (vytížení CPU a paměti, síť a diskové I/O) s názvem apacheweb
, spusťte následující příkaz:
docker stats apacheweb
Měli byste vidět následující výstup:
Zobrazit všechny procesy kontejneru Docker
Chcete-li zobrazit seznam všech běžících procesů v běžícím kontejneru s názvem apacheweb , spusťte následující příkaz:
docker top apacheweb
Měli byste vidět následující výstup:
Zobrazit protokoly kontejneru Docker
Chcete-li zobrazit protokoly běžícího kontejneru s názvem apacheweb , spusťte následující příkaz:
docker logs apacheweb
Měli byste vidět následující výstup:
Spuštění, zastavení a pozastavení kontejneru Docker
Chcete-li zastavit spuštěný kontejner s názvem apacheweb , spusťte následující příkaz:
docker container stop apacheweb
Chcete-li spustit kontejner s názvem apacheweb , spusťte následující příkaz:
docker container start apacheweb
Chcete-li pozastavit kontejner s názvem apacheweb , spusťte následující příkaz:
docker container pause apacheweb
Restartovat nebo zabít kontejner Docker
Chcete-li restartovat spuštěný kontejner s názvem apacheweb , spusťte následující příkaz:
docker container restart apacheweb
Chcete-li zabít spuštěný kontejner s názvem apacheweb , spusťte následující příkaz:
docker container kill apacheweb
Připojit k již spuštěnému kontejneru dockeru
Chcete-li se připojit k běžícímu kontejneru, spusťte následující příkaz:
docker container exec -it apacheweb /bin/bash
Chcete-li spustit jakýkoli příkaz uvnitř spuštěného kontejneru, spusťte následující příkaz:
docker container exec -it apacheweb ls
Správa obrázků Docker
V této části vám ukážeme některé nejčastěji používané příkazy pro správu obrazu Docker.
Stáhnout obrázek Docker z registru
Chcete-li stáhnout nebo stáhnout bitovou kopii z registru Docker, použijte následující syntaxi:
docker pull [image-name]
Obraz webového serveru Nginx můžete například stáhnout z registru Docker pomocí následujícího příkazu:
docker pull nginx
Měli byste získat následující výstup:
Nahrát obrázek Dockeru do registru
Pokud chcete nahrát existující obrázek do registru Docker, použijte následující syntaxi:
docker push [image-name]
Přihlaste se do Docker The Registry
Nejprve se budete muset přihlásit do registru Docker pomocí následujícího příkazu:
docker login
Po přihlášení spusťte následující příkaz, abyste získali ID obrázku Nginx a označte obrázek následujícím příkazem:
docker images
Výstup:
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest f35646e83998 3 weeks ago 133MB
httpd latest 3dd970e6b110 3 weeks ago 138MB
Přidat značku k obrázku dockeru
Dále označte obrázek následujícím příkazem:
docker tag f35646e83998 amaksimov/nginx
Kde:
f35646e83998
je ID obrázku, amaksimov je název registru Docker a nginx je název obrázku.
Dále odešlete obraz Nginx do registru Docker pomocí následujícího příkazu:
docker push amaksimov/nginx
Měli byste vidět následující výstup:
Vytvořit obrázek dockeru z běžícího kontejneru
Můžete také vytvořit obrázek z existujícího kontejneru pomocí následující syntaxe:
docker commit [container-name] [new-image-name]
Vytvořte například obrázek z kontejneru Apache a spusťte následující příkaz:
docker commit apacheweb apache-image
Chcete-li uložit stávající obrázek do archivu tar spuštěním následujícího příkazu:
docker save apache-image > apache-image.tar
Historie obrázku Docker
Historii libovolného obrazu Dockeru můžete vytisknout pomocí následujícího příkazu:
docker history apache-image
Měli byste získat následující výstup:
Smazat obrázek Docker
Jakýkoli obraz Dockeru můžete odstranit pomocí následující syntaxe:
docker rmi [image-name]
Pokud například chcete odstranit obrázek Apache, budete muset zastavit kontejner, který používá httpd
obrázek:
docker container stop apacheweb
docker rm apacheweb
Nejprve musíme smazat apache-image
obrázek:
docker rmi apache-image
Teprve poté odstraníme httpd
obrázek pomocí následujícího příkazu:
docker rmi httpd
Postupem času mohou ručně vytvořené obrázky a kontejnery přinést na váš server nějaký nepořádek. Podívejte se prosím na naše časté dotazy ohledně Dockeru, kde zjistíte, jak vše vyčistit.
Správa svazků Docker
Když vytvoříte nový kontejner, uložíte některá data a kontejner smažete, data budou ztracena. V tomto případě můžete vytvořit svazek na hostitelském systému a spustit kontejner pomocí tohoto svazku. Po smazání kontejneru můžete načíst data ze svazku. Svazek Docker můžete také použít ke sdílení dat mezi více kontejnery.
V této části budeme některé nejčastěji používat docker volume
příkazy s příklady.
Vytvořit svazek dockeru
Chcete-li vytvořit nový svazek s názvem datavolume
pomocí následujícího příkazu:
docker volume create datavolume
Vypsat všechny svazky Docker
Chcete-li zobrazit vytvořený svazek, spusťte následující příkaz:
docker volume ls
Měli byste vidět následující výstup:
Tisk informací o objemu dockeru
Chcete-li vytisknout další informace o svazku, spusťte následující příkaz:
docker inspect datavolume
Měli byste vidět následující výstup:
Připojit svazek ke kontejneru dockeru
Chcete-li vytvořit nový kontejner s názvem apacheweb a připojit datový svazek na hostitelském systému do adresáře /mnt kontejneru, spusťte následující příkaz:
docker run -it --name apacheweb1 --mount source=datavolume,destination=/mnt -td httpd
Vzdálený svazek dockeru
Chcete-li svazek odebrat, spusťte následující příkaz:
docker volume rm datavolume
Nejčastější dotazy k Dockeru
Jak odstranit nepoužívané obrázky Docker
Chcete-li odstranit všechny nepoužité obrazy dockeru, musíte spustit následující příkaz:
docker rmi $(docker images -a -q)
Jak odstranit všechny opuštěné kontejnery Docker
Všechny opuštěné kontejnery Docker lze odebrat spuštěním následujícího příkazu:
docker rm $(docker ps -a -f status=exited -q)
Jak zastavit a odebrat všechny kontejnery dockeru
Chcete-li zastavit všechny kontejnery Docker, musíte spustit:
docker stop $(docker ps -a -q)
Chcete-li odstranit všechny zastavené kontejnery Docker, musíte spustit:
docker rm $(docker ps -a -q)
Jak odstranit všechny nepoužívané obrázky, kontejnery, svazky, sítě Dockeru
Chcete-li odstranit všechny nepoužívané prostředky Dockeru, můžete použít následující příkaz:
docker system prune
Chcete-li úplně odstranit všechny prostředky Dockeru (použité i nevyužité), spusťte následující příkaz:
docker system prune -a
Shrnutí
Ve výše uvedené příručce jste se s příklady dozvěděli o nejčastěji používaných příkazech Dockeru a jejich použití. Doufám, že vám to pomůže při provádění každodenních úkolů.