GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Jak oříznout nevyužité zdroje Dockeru

Docker vám umožňuje rychle zabalit vaše aplikace do kontejnerů, takže je můžete spouštět kdekoli z vašeho notebooku až po veřejný cloud. Po chvíli používání Dockeru můžete nashromáždit velké množství nadbytečných kontejnerů, obrázků a dalších zdrojů. Zde je návod, jak je uklidit.

Docker obvykle nic nemaže, pokud mu to neřeknete. To znamená, že obrázky, které jste vytáhli, a kontejnery, které jste vytvořili, pravděpodobně stále zůstávají ve vašem systému, i když se již nepoužívají.

Příliš mnoho nadbytečných zdrojů může rychle vést k nadměrnému využití disku. Výsledkem je také mnohem delší výstup při vypisování zdrojů na příkazovém řádku, takže je obtížnější najít hledané informace.

Zdroje pro prořezávání visících ploch

„Houpající se“ prostředek je jakýkoli objekt Docker, který není aktuálně spojen s kontejnerem. To zahrnuje obrazy, sítě a svazky Dockeru a také zastavené kontejnery. V případě obrázků obrázek „visí“, pokud není označen a nemá žádné odkazy.

Docker poskytuje jediný příkaz pro údržbu, který vám umožní vyčistit všechny visící prostředky a zastavené kontejnery. Pokud zdroj nepoužívá běh kontejneru, bude smazán.

docker system prune

Spuštěním příkazu se zobrazí výzva k potvrzení se seznamem typů prostředků, které se mají odstranit. Zadejte y a stiskněte Enter pro pokračování v mazání. Potvrzení můžete zakázat předáním -f nebo --force vlajka.

Svazky nejsou ve výchozím nastavení odstraněny. Odstranění svazků riskuje ztrátu trvalých dat, která si možná budete chtít ponechat. Pokud chcete odstranit svazky, které nejsou přidruženy ke kontejneru, předejte --volumes příznak k jejich zahrnutí do operace.

Ještě více obrazových dat můžete smazat předáním -a (nebo --all ) vlajka. To způsobí, že Docker smaže všechny nepoužité obrázky, nejen visící nereferencované. Každý obrázek ve vašem systému bude smazán, pokud to nevyžaduje alespoň jeden spuštěný kontejner.

Použití filtrů při prořezávání

Filtry lze použít s prune příkaz. Filtrování vám dává větší kontrolu nad tím, co bude smazáno. V současné době jsou podporovány dva filtry, until a timestamp .

  • until until filtr zabraňuje smazání kontejnerů, obrázků a sítí vytvořených před daným časem. Čas můžete zadat v několika různých formátech, jako je například časové razítko Unix v sekundách (např. 1614890000 ) nebo řetězec časového razítka ve formátu data (např. 2021-03-04T20:30:00 ).
  • label label filtr omezuje odstranění, takže budou odstraněny pouze zdroje s daným štítkem. Štítky lze použít s kontejnery, obrázky, sítěmi a svazky. Štítky zadáte buď jako label=key=value (klíč se rovná hodnotě), label!=key=value (klíč se nerovná hodnotě), label=key (má daný štítek) nebo label!=key (nemá daný štítek).

Chcete-li použít filtr, předejte jej do --filter příznak:

docker system prune --filter until=2021-03-04T20:30:00 --filter label=foo=bar

Tento příkaz odstraní prostředky s foo=bar štítky, které byly vytvořeny před 20:30 dne 4. března. Jakékoli zdroje, které nesplňují tato kritéria, zůstanou nedotčeny.

Prořezávání jednotlivých typů zdrojů

Nemusíte vždy používat docker system prune . Docker také poskytuje podrobnější příkazy pro ořezávání. Ty lze použít, když chcete odstranit pouze jeden typ zdroje.

--force a --filter příznaky podporované docker system prune platí také pro jednotlivé příkazy prune uvedené níže.

Prořezávání kontejnerů

Každodenní příkazy Dockeru mohou rychle vést k velkému počtu zastavených kontejnerů. Pokud docker build, problém se ještě zhorší obrázky bez --rm flag, protože to způsobí, že budou zachovány prostřední vrstvy sestavení.

Spusťte docker container prune k vyčištění zastavených nádob. Zastavené kontejnery se při spuštění docker ps nezobrazují; Chcete-li je zobrazit, budete muset použít docker ps -a zobrazíte všechny kontejnery ve vašem systému.

Pokud chcete odebrat jednotlivý kontejner, použijte docker rm příkaz předávající ID kontejneru. Můžete to získat spuštěním docker ps . Pokud je kontejner spuštěn, budete muset použít --force příznakem jej smažete.

Prořezávání obrázků

Použijte docker image prune pro odstranění všech visících obrázků. Jako docker system prune , bude to mít vliv na obrázky, které buď nejsou označeny, nebo na ně neodkazuje žádný kontejner.

Přidejte -a příznak, abyste místo toho odstranili všechny nepoužívané obrázky. Tím se vyčistí každý obraz ve vašem systému, který není vyžadován alespoň jedním kontejnerem. Budou zahrnuty i označené obrázky, které vám umožní rychle odstranit staré obrázky z Docker Hub.

Konkrétní obrázek můžete odstranit pomocí docker rmi příkaz:

docker rmi wordpress:latest

Pokud má jeden obrázek více značek, docker rmi odstraní daný tag, aniž by skutečně smazal obrázek. Jakmile bude odstraněn poslední štítek, bude smazán.

Prořezávání sítí

Sítě dockeru se nečistí automaticky. Časem jich můžete skončit s velkým množstvím. To zahlcuje váš systém nadbytečnými virtuálními přemosťovacími zařízeními a položkami směrovací tabulky. Spusťte docker network prune zničit všechny nepoužívané sítě a vrátit změny v konfiguraci vašeho hostitele.

Jednotlivé sítě můžete odstranit spuštěním docker rm my-network .

Prořezávání objemů

Docker nikdy nesmaže svazek. Ukládají trvalá data vytvořená vašimi kontejnery, takže jejich nechtěné odstranění by mohlo mít zničující následky. Svazky mohou být také sdíleny více kontejnery nebo mohou být ponechány v nečinnosti připravené k připojení k jinému kontejneru v budoucnu.

Chcete-li oříznout nepoužívané svazky, měli byste spustit docker volume prune . Tím se odstraní všechny svazky, které nepoužívá alespoň jeden kontejner. Jednotlivé svazky lze odebrat pomocí docker volume rm my-volume .

Prevence budoucí akumulace

Riziko budoucího hromadění nadbytečných zdrojů můžete minimalizovat tím, že budete dávat pozor na předání --rm příznak docker build a docker run příkazy.

Při použití s ​​build , způsobí odstranění zprostředkujících vrstev sestavení (označených jako <none>:<none> v docker images ) výstup. To může představovat výrazné snížení využití disku. Pro každou instrukci ve vašem Dockerfile se obvykle vytvoří nová zprostředkující vrstva . Obvykle je můžete odstranit, pokud je nehodláte později použít jako výchozí bod pro nový obrázek.

Pomocí --rm s docker run odebere kontejner, jakmile jeho příkaz skončí. To je ideální při spuštění binárního souboru v kontejneru na jedno použití. Nepředávejte --rm do kontejnerů, které hodláte provozovat trvale, nebo které možná budete chtít spustit a zastavit na vyžádání. Příklady zahrnují webové a databázové servery, které spouštějí službu namísto příkazů dodaných uživatelem.

Závěr

Snížením prostředků Dockeru můžete uvolnit místo na disku a pomoci vám pracovat s rozhraním CLI Dockeru. Odstranění nadbytečných kontejnerů a obrázků usnadňuje identifikaci zdrojů, které hledáte.

Docker nic nesmaže, pokud mu to neřeknete. Vyplatí se spustit docker system prune pravidelně, aby byl váš systém čistý. Můžete vytvořit úlohu cron, která ji spouští měsíčně, pomocí until filtr pro vytvoření období uchování pro nedávno přidané zdroje.


Docker
  1. Jak odstranit všechny obrázky, kontejnery, svazky, sítě a nevyužité zdroje Dockeru

  2. Jak automaticky aktualizovat běžící kontejnery Docker

  3. Jak exportovat a importovat kontejnery Docker

  1. Jak sdílet data mezi kontejnery Docker

  2. Jak vypsat Docker kontejnery

  3. Jak odstranit všechny kontejnery Docker

  1. Jak používat Docker Compose

  2. Jak připojit kontejnery Docker

  3. Jak předávat proměnné prostředí do kontejnerů Docker