Úvod
Kontejnery Docker jsou navrženy tak, aby poskytovaly soběstačné prostředí se všemi knihovnami a konfiguracemi potřebnými pro spuštění softwaru. Během vývoje mohou růst neorganizovaně se starými, zastaralými a nepoužívanými součástmi.
V této příručce se dozvíte, jak uspořádat prostředí Dockeru odebráním obrázků, kontejnerů, svazků a sítí Dockeru.
Pomocí těchto příkazů je správa kontejnerů Docker rychlá a přímočará.
Předpoklady
- Systém Linux se systémem Docker
- Přístup k terminálu/příkazovému řádku (Ctrl +Alt +T na Ubuntu, Alt +F2 na CentOS)
- Uživatelský účet s sudo privilegia
Jak odebrat kontejnery Docker
Kontejner vytváří specifické prostředí, ve kterém lze proces spustit. Během životního cyklu vývoje je vytvořeno, testováno a opuštěno mnoho kontejnerů.
Proto je důležité vědět, jak najít nepotřebné nádoby a odstranit je.
Zastavit kontejnery
1. Nejprve vytvořte seznam všech kontejnerů Docker pomocí příkazu:
docker container ls -a
Výstup zobrazuje seznam všech běžících kontejnerů, jejich ID, názvy, obrázky, stav a další parametry.
Můžete také vygenerovat seznam všech kontejnerů pouze podle jejich číselných ID, spusťte příkaz:
docker container ls -aq
2. Chcete-li zastavit konkrétní kontejner , zadejte následující:
docker container stop [container_id]
Nahraďte [container_id]
s číselným ID kontejneru z vašeho seznamu.
Do stejného příkazu můžete zadat více ID kontejnerů.
Chcete-li zastavit všechny kontejnery , zadejte:
docker container stop $(docker container ls -aq)
To přinutí Docker použít seznam všech ID kontejnerů jako cíl stop
příkaz.
Odstranění zastaveného kontejneru
Chcete-li odstranit zastavený kontejner , použijte příkaz:
docker container rm [container_id]
Stejně jako dříve se tímto odebere kontejner s ID, které zadáte.
Odstranit všechny zastavené kontejnery
Chcete-li odstranit všechny zastavené kontejnery :
docker container rm $(docker container ls -aq)
Odebrat všechny kontejnery Docker
Chcete-li Docker vyčistit a začít od začátku, zadejte příkaz:
docker container stop $(docker container ls -aq) && docker system prune -af --volumes
To dává Dockeru pokyn, aby zastavil kontejnery uvedené v závorkách.
V závorkách dáváte Dockeru pokyn, aby vygeneroval seznam všech kontejnerů s jejich číselným ID. Poté jsou informace předány zpět na container stop
příkaz a zastaví všechny kontejnery.
&&
atribut instruuje Docker, aby odstranil všechny zastavené kontejnery a svazky.
-af
označuje, že by to mělo platit pro všechny kontejnery (a
) bez požadovaného potvrzení (f
).
Odebrání nádoby s filtry
Můžete také určit odstranění všech objektů, které neodpovídají zadanému štítku.
Chcete-li to provést, použijte příkaz:
docker container prune --filter="label!=maintainer=Jeremy"
Tento příkaz říká Dockeru, aby odstranil všechny kontejnery které nejsou označeny správcem "jeremy .“ !=
příkaz je logický zápis, který znamená "není rovno ."
Rozpis label
příkazy:
label=<key>
label=<key>=<value>
label!=<key>
label!=<key>=<value>
Použití těchto výrazů ve spojení se štítky vám poskytuje hloubkovou kontrolu nad odstraňováním položek v Dockeru.
Jak odebrat obrázky Docker
Docker obrazy jsou soubory, které obsahují více vrstev používaných ke spouštění kódu v kontejneru.
Obrázky mohou během vývoje projít mnoha iteracemi. Staré a zastaralé obrázky mohou zahltit váš systém, zabírat úložný prostor a ztěžovat vyhledávání.
1. Chcete-li odebrat obrázek Dockeru , začněte sepsáním všech obrázků ve vašem systému:
docker image ls
Výstup zobrazuje lokálně dostupné obrázky Docker, jak je vidět níže.
2. Poznamenejte si ID OBRÁZKU – toto je identifikátor použitý k odstranění obrázku.
3. Poté odeberte nechtěné obrázky:
docker image rm [image_id1] [image_id2]
Nahraďte [image_id1]
a [image_id2]
s ID obrázku, které jste vytáhli z prvního příkazu. Můžete zadat jedno ID obrázku nebo více ID pro odstranění.
Systém může na váš požadavek odpovědět chybovou zprávou, že došlo ke konfliktu a není schopen odstranit odkaz na úložiště. To znamená, že kontejner používá obrázek. Než budete moci odstranit obrázek, musíte nejprve odstranit kontejner.
Odebrání obrázků Docker pomocí filtrů
V době zveřejnění jsou jedinými podporovanými filtry until
a label
. Přesto se jedná o výkonné nástroje pro správu zdrojů Docker.
Použijte until
filtr pro odstranění všech zdrojů do daného času.
Zadejte následující:
docker image prune -a --filter "until=24h"
Tím se odstraní všechny (-a
) obrázky vytvořené za posledních 24 hodin. Příkaz lze použít pro kontejnery, obrázky a filtry. Ujistěte se, že jste specifikovali dílo, které chcete odstranit.
until
příkaz přijímá unixová časová razítka, časová razítka ve formátu data nebo množství času (30 m, 4 h, 2 h 25 m) počítané proti strojovému času.
Použijte label
příkaz k odstranění aktiv definovaných štítky.
Zadejte následující:
docker image prune --filter="label=old"
Tím odstraníte všechny obrázky dockeru které byly označeny jako „staré“.
Filtrování lze také použít k definování konkrétní hodnoty štítku.
Pokud je například kontejner označen klíčem „maintainer“ a hodnota „maintainer“ je buď „bill“ nebo „jeremy“, můžete zadat:
docker container prune --filter="label=maintainer=bill"
Docker poté odstraní všechny kontejnery se štítkem „maintainer“ s hodnotou „bill.“
Jak odebrat svazky Docker
Svazek se používá k ukládání dat Docker.
Pomáhá ukládat a organizovat data mimo kontejnery tak, aby byla dostupná pro více kontejnerů.
1. Pomocí následujícího příkazu vygenerujte seznam všech dostupných svazků Docker:
docker volume ls
Poznamenejte si VOLUME NAME chcete odstranit.
2. Poté zadejte:
docker volume rm VolumeName
Nezapomeňte nahradit VolumeName
se skutečným názvem, který jste vygenerovali předchozím příkazem.
Pokud je svazek používán existujícím kontejnerem, systém odpoví chybou. To znamená, že musíte nejprve odstranit kontejner.
Jak odebrat sítě Docker
Sítě Docker umožňují různým kontejnerům vzájemně volně komunikovat a zároveň zabraňují provozu mimo síť. To se obvykle provádí pomocí sítě Docker bridge.
prune
příkaz odstraní všechny nepoužívané sítě.
Odebrání jedné sítě
1.Zobrazte seznam všech existujících sítí Docker pomocí příkazu:
docker network ls
2. Poznamenejte si ID SÍTĚ – toto je identifikátor používaný k odstranění konkrétní sítě. Poté zadejte:
docker network rm [networkID]
Nahraďte [networkID]
s ID, které jste získali z prvního příkazu.
Může se zobrazit chybová zpráva, která říká, že síť má aktivní koncové body. To znamená, že síť je aktuálně využívána kontejnery. Než budete moci odstranit síť, musíte odstranit kontejnery, které používají síť.
Odstranit všechny nepoužívané objekty Docker
prune
příkaz automaticky odstraní všechny prostředky, které nejsou spojeny s kontejnerem. Toto je zjednodušený způsob, jak vyčistit nepoužívané obrazy, kontejnery, svazky a sítě.
V okně terminálu zadejte následující:
docker system prune
Mohou být zahrnuty další příznaky:
-a
Chcete-li zahrnout zastavené kontejnery a nepoužité obrázky-f
Vynechá potvrzovací dialog--volumes
Odebere všechny nepoužívané svazky
Můžete také určit jeden typ objektu, který má být odstraněn, namísto celého prostředí:
docker container prune
docker image prune
docker volume prune
docker network prune
Spuštění docker system prune -a
odstraní nepoužité i visící obrázky. Obrázky použité v kontejneru, ať už aktuálně spuštěný nebo ukončený, NEBUDOU ovlivněny.
Seznam všech zdrojů Docker
Pro zobrazení zdrojů zadejte následující příkazy:
docker container ls
docker image ls
docker volume ls
docker network ls
docker info
Výše uvedené uvádí počet kontejnerů, obrázků a informací o instalaci Dockeru. Tyto příkazy vám mohou pomoci najít a identifikovat zdroje, které si chcete ponechat nebo které chcete odstranit.
Lze přidat také následující příznaky:
-a
zobrazit všechny zdroje (včetně těch, které jsou zastaveny)-q
nebo--quiet
(zobrazí se pouze číselné ID)