Android

Jak odstranit ukotvitelné kontejnery, obrázky, svazky a sítě

Calling All Cars: June Bug / Trailing the San Rafael Gang / Think Before You Shoot

Calling All Cars: June Bug / Trailing the San Rafael Gang / Think Before You Shoot

Obsah:

Anonim

Docker umožňuje rychle vytvářet, testovat a nasazovat aplikace jako přenosné, soběstačné kontejnery, které mohou běžet prakticky kdekoli.

Docker neodstraní nepoužité objekty, jako jsou kontejnery, obrázky, svazky a sítě, pokud tomu výslovně neřeknete. Při práci s Dockerem můžete snadno nashromáždit velké množství nepoužitých objektů, které spotřebovávají značné místo na disku a ruší výstup produkovaný příkazy Docker.

Tato příručka slouží jako „cheat sheet“, který pomáhá uživatelům Docker udržovat jejich systém organizovaný a uvolnit místo na disku odstraněním nepoužitých Docker kontejnerů, obrázků, svazků a sítí.

Odebrání všech nepoužitých objektů

Příkaz docker system prune odstraní všechny zastavené kontejnery, všechny visící obrazy a všechny nepoužívané sítě:

docker system prune

Budete vyzváni k pokračování, použijte -f nebo --force k vynechání výzvy.

WARNING! This will remove: - all stopped containers - all networks not used by at least one container - all dangling images - all build cache Are you sure you want to continue?

docker system prune --volumes

WARNING! This will remove: - all stopped containers - all networks not used by at least one container - all volumes not used by at least one container - all dangling images - all build cache Are you sure you want to continue? y

Vyjmutí kontejnerů Docker

Dokovací kontejnery nejsou automaticky odstraněny, když je zastavíte, pokud nespustíte kontejner pomocí příznaku --rm .

Vyjměte jeden nebo více kontejnerů

Chcete-li odebrat jeden nebo více obrázků Docker, použijte příkaz docker container rm následovaný ID kontejnerů, které chcete odstranit.

Seznam všech kontejnerů získáte předáním příznaku -a příkazu docker container ls :

docker container ls -a

Výstup by měl vypadat asi takto:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cc3f2ff51cab centos "/bin/bash" 2 months ago Created competent_nightingale cd20b396a061 solita/ubuntu-systemd "/bin/bash -c 'exec …" 2 months ago Exited (137) 2 months ago systemd fb62432cf3c1 ubuntu "/bin/bash" 3 months ago Exited (130) 3 months ago jolly_mirzakhani

Jakmile znáte CONTAINER ID kontejneru kontejnerů, které chcete odstranit, předejte jej do příkazu docker container rm . Chcete-li například odebrat první dva kontejnery uvedené ve výstupu výše, spusťte:

docker container rm cc3f2ff51cab cd20b396a061

Error response from daemon: You cannot remove a running container fc983ebf4771d42a8bd0029df061cb74dc12cb174530b2036987575b83442b47. Stop the container before attempting removal or force remove.

Odstraňte všechny zastavené kontejnery

Před provedením příkazu pro odebrání získáte seznam všech nespuštěných (zastavených) kontejnerů, které budou odstraněny pomocí následujícího příkazu:

docker container ls -a --filter status=exited --filter status=created

Chcete-li odstranit všechny zastavené kontejnery, použijte příkaz docker container prune :

docker container prune

Budete vyzváni k pokračování, použijte -f nebo --force k vynechání výzvy.

WARNING! This will remove all stopped containers. Are you sure you want to continue? y

Odstraňte kontejnery pomocí filtrů

Příkaz docker container prune umožňuje odstranit kontejnery na základě stavu pomocí příznaku filtrování - --filter .

V době psaní tohoto článku jsou aktuálně podporované filtry until a label . Můžete použít více než jeden filtr pomocí více příznaků filtru.

Chcete-li například odebrat všechny obrázky vytvořené před více než 12 hodinami, spusťte:

docker container prune --filter "until=12h"

Zastavte a vyjměte všechny kontejnery

Seznam všech kontejnerů Docker ve vašem systému docker container ls -aq příkazem docker container ls -aq .

Chcete-li zastavit všechny spuštěné kontejnery, použijte příkaz docker container stop následovaný seznamem všech ID kontejnerů.

docker container stop $(docker container ls -aq)

Jakmile jsou všechny kontejnery zastaveny, můžete je odstranit pomocí příkazu docker container rm následovaného seznamem ID kontejnerů.

docker container rm $(docker container ls -aq)

Odstranění obrázků Docker

Odstraňte jeden nebo více obrázků

Chcete-li odebrat jeden nebo více obrázků Docker, použijte příkaz docker images ls a vyhledejte ID obrázků, které chcete odstranit.

docker image ls

Výstup by měl vypadat asi takto:

REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 75835a67d134 7 days ago 200MB ubuntu latest 2a4cca5ac898 2 months ago 111MB linuxize/fedora latest a45d6dca3361 3 months ago 311MB java 8-jre e44d62cf8862 3 months ago 311MB

Jakmile lokalizujete obrázky, které chcete odstranit, předejte jejich IMAGE ID příkazu docker image rm . Chcete-li například odebrat první dva obrázky uvedené ve výstupu výše, postupujte takto:

docker image rm 75835a67d134 2a4cca5ac898

Error response from daemon: conflict: unable to remove repository reference "centos" (must force) - container cd20b396a061 is using its referenced image 75835a67d134

Odstraňte visící obrázky

Docker poskytuje příkaz docker image prune který lze použít k odstranění neotevřených a nepoužívaných obrázků.

Visící obrázek je obraz, který není označen a není používán žádným kontejnerem. Chcete-li odstranit typ visících obrázků:

docker image prune

Budete vyzváni k pokračování, použijte -f nebo --force k vynechání výzvy.

WARNING! This will remove all dangling images. Are you sure you want to continue? y Při odstraňování visících obrázků nebudou obrázky, které vytvoříte, označeny také.

Odstraňte všechny nepoužité obrázky

Chcete-li odebrat všechny obrázky, na které neodkazuje žádný existující kontejner, nejen ty visící, použijte příkaz prune s příznakem -a :

docker image prune -a

WARNING! This will remove all images without at least one container associated to them. Are you sure you want to continue? y

Odstraňte obrázky pomocí filtrů

Pomocí příkazu --filter můžete také odebrat obrázky na základě určité podmínky pomocí příznaku filtrování - --filter .

V době psaní tohoto článku jsou aktuálně podporované filtry until a label . Můžete použít více než jeden filtr pomocí více příznaků filtru.

Chcete-li například odebrat všechny obrázky vytvořené před více než 12 hodinami, měli byste spustit:

docker image prune -a --filter "until=12h"

Odstranění svazků doku

Odstraňte jeden nebo více svazků

Chcete-li odebrat jeden nebo více svazků Docker, vyhledejte pomocí příkazu docker volume ls ID svazků, které chcete odstranit.

docker volume ls

Výstup by měl vypadat asi takto:

DRIVER VOLUME NAME local 4e12af8913af888ba67243dec78419bf18adddc3c7a4b2345754b6db64293163 local terano

Jakmile najdete VOLUME NAME svazků, které chcete odstranit, předejte je do příkazu docker volume rm . Chcete-li například odebrat první svazek uvedený ve výše uvedeném výstupu, spusťte:

docker volume rm 4e12af8913af888ba67243dec78419bf18adddc3c7a4b2345754b6db64293163

Error response from daemon: remove 4e12af8913af888ba67243dec78419bf18adddc3c7a4b2345754b6db64293163: volume is in use -

Odstraňte všechny nepoužité svazky

Chcete-li odstranit všechny nepoužité svazky, použijte příkaz docker image prune :

docker volume prune

Budete vyzváni k pokračování, použijte -f nebo --force k vynechání výzvy.

WARNING! This will remove all local volumes not used by at least one container. Are you sure you want to continue?

Odebrání sítí Docker

Odebrat jednu nebo více sítí

Chcete-li odebrat jednu nebo více sítí Docker, použijte příkaz docker network ls a vyhledejte ID sítí, které chcete odebrat.

docker network ls

Výstup by měl vypadat asi takto:

NETWORK ID NAME DRIVER SCOPE 107b8ac977e3 bridge bridge local ab998267377d host host local c520032c3d31 my-bridge-network bridge local 9bc81b63f740 none null local

Jakmile lokalizujete sítě, které chcete odstranit, předejte jejich NETWORK ID příkazu docker network rm . Například pro odstranění sítě s názvem run my-bridge-network :

docker network rm c520032c3d31

Error response from daemon: network my-bridge-network id 6f5293268bb91ad2498b38b0bca970083af87237784017be24ea208d2233c5aa has active endpoints

Odebrat veškerou nepoužívanou síť

Chcete-li odebrat všechny nepoužívané sítě, použijte příkaz docker network prune .

docker network prune

Budete vyzváni k pokračování, použijte -f nebo --force k vynechání výzvy.

WARNING! This will remove all networks not used by at least one container. Are you sure you want to continue?

Odstraňte sítě pomocí filtrů

--filter sítě --filter můžete sítě odstranit podle stavu pomocí příznaku filtrování - --filter .

V době psaní tohoto článku jsou aktuálně podporované filtry until a label . Můžete použít více než jeden filtr pomocí více příznaků filtru.

Chcete-li například odebrat všechny sítě, které byly vytvořeny před více než 12 hodinami, spusťte:

docker network prune -a --filter "until=12h"

Závěr

V této příručce jsme vám ukázali některé běžné příkazy pro odstraňování kontejnerů Docker, obrázků, svazků a sítí.

Měli byste si také prohlédnout oficiální dokumentaci Docker.

přístavní dělník