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

Udržujte své obrázky Docker spravovatelné pomocí Docker Image Prune

Když se soustředíte na nasazování svých projektů a testování věcí v kontejnerech Docker, může se to docela snadno zamotat. Zjistíte, že čas od času potřebujete uklidit pracovní prostor. Proč tedy neudržovat prostředí Dockeru bez nepořádku pomocí docker image prune a dalších užitečných příkazů?

Tento tutoriál vás naučí mnoho způsobů, jak udržet prostředí Docker čisté a spravovatelné, a také některé osvědčené postupy, jak zkrotit potenciální složitosti.

Začněme!

Předpoklady

Abyste mohli pokračovat v tomto tutoriálu, musíte mít k dispozici následující:

  • Počítač s Windows 10 – Tento výukový program používá Windows 10 a bude spouštět příkazy Dockeru v PowerShellu, ale jakýkoli operační systém, na kterém bude Docker spuštěn, je v pořádku.
  • Docker – Tento výukový program používá jako hostitel kontejneru Docker Desktop v3.6.0.
  • Stávající kontejner Docker k vyčištění

Odebrání obrázků Docker

Prostředí Docker se skládá z mnoha různých komponent od obrázků, kontejnerů, sítí a tak dále. Najdete mnoho různých součástí k čištění. Začněme tento proces čištění nejprve oříznutím všech starých obrázků, které již nepotřebujete. Ale nebojte se, pokud odeberete obrázky a necháte si vytvořit soubor Dockerfile, který tyto smazané obrázky potřebuje, Docker je automaticky znovu stáhne.

Pokud potřebujete odstranit nepotřebné obrázky, které jste si stáhli v minulosti, rm velení je tvůj přítel. Tento příkaz odstraní obrázky a kontejnery, ale výukový program se nejprve zaměří na obrázky.

Pokud máte jeden nebo více kontejnerů, které aktuálně používají obrázek, který chcete odstranit, musíte nejprve zastavit kontejnery používající tento obrázek pomocí docker stop příkaz. Další informace najdete v článku ATA Use Docker Stop Containers Without Screwing Things Up!.

Všimněte si, že obrázky Docker nelze odebrat, dokud nezastavíte kontejnery, které obrázek používají.

Chcete-li odstranit obrázek pomocí docker rm , musíte nejprve najít ID obrázku. Chcete-li to provést, spusťte docker image ls příkaz. docker image ls příkaz přečte Docker a vrátí všechny obrázky, které aktuálně máte, včetně ID každého obrázku.

Můžete také spustit docker images příkaz k zobrazení seznamu z naposledy vytvořených obrázků.

docker image ls

Níže můžete vidět výsledek docker image ls příkaz v seznamu tabulky se sloupci REPOSITORY , TAG , ID OBRÁZKU , VYTVOŘENO a VELIKOST .

Jakmile znáte ID obrázku, poskytněte toto ID obrázku docker image rm příkaz, jak je znázorněno níže. Jakmile tak učiníte, Docker odstraní obrázek se zadaným ID.

# Remove only the images with the specified image ID
docker image rm image_id

Odstranění „vislých“ obrázků dockeru

Jakmile začnete vytvářet další kontejnery a stahovat další obrázky, je pravděpodobné, že budete mít různé obrázky, které nemají žádný přidružený kontejner. Tyto obrázky se nazývají „visící“ nebo „zatoulané“ obrázky a Docker je v současné době nepoužívá.

Abychom ušetřili místo na disku a udrželi pořádek, vyčistíme všechny tyto visící obrázky. Chcete-li to provést, spusťte docker image prune . Tento příkaz prunes nebo odstraňte obrázky, které z nich nemají vytvořený kontejner.

docker image prune

Pokud chcete odstranit VŠECHNY obrázky s přidruženým kontejnerem nebo ne, nemusíte hledat konkrétní ID obrázku. spusťte docker image prune -a přejít na jadernou energii a všechny je odstranit.

Odebrání kontejnerů Docker

Jakmile vyčistíte obrázky Dockeru, je čas přejít na kontejnery. Naštěstí uvidíte, že úkol odstraňování kontejnerů je podobný jako odstraňování obrázků pomocí rm příkaz.

Nejprve najděte ID kontejneru pomocí docker container ls příkaz k odstranění kontejnerů, jak je znázorněno níže. Tento příkaz vrátí všechny kontejnery, včetně CONTAINER ID . -al Parametr je volitelný, aby vám ukázal všechny kontejnery (spuštěné nebo ne) a pouze nejnovější verzi každého kontejneru.

docker container ls -al # List all Docker containers

Jakmile znáte ID kontejneru, spusťte docker rm a předejte mu ID kontejneru, které chcete odstranit.

# Remove only the containers with the specified container ID
docker rm container_id

Můžete také zadat více než jedno ID kontejneru oddělením každého ID mezerou, jak je znázorněno níže. Tento příkaz odstraní (rm ) výukové kontejnery Alpine a Docker 101 s ID kontejnerů f8ec07177218 a 6fac840d9382 .

docker rm f8ec07177218 6fac840d9382

Odebrání všech zastavených kontejnerů Docker

Možná máte spoustu zastavených kontejnerů, které jen zabírají místo. Stejně jako visící obrázky ani zastavené kontejnery v tuto chvíli neslouží žádnému účelu.

Chcete-li odstranit všechny zastavené kontejnery:

1. Spusťte docker příkaz níže k vypsání všech (ls --all ) Docker kontejnery. Všimněte si všech kontejnerů se stavem STATUS z Před (X) Y hodinami . Všechny tyto kontejnery jsou v současné době zastaveny.

docker container ls --all

2. Nyní spusťte docker container prune příkaz k odstranění všech zastavených kontejnerů. Po spuštění tohoto příkazu uvidíte, která ID kontejnerů příkaz odstranil.

docker container prune

3. Nakonec spusťte docker container ls -a znovu, abyste viděli, že každý zastavený kontejner byl odstraněn.

Pokud nechcete zadávat jedno nebo více ID kontejnerů ručně, můžete také vnořit příkazy Docker pomocí $() do obou kontejnerů seznamu a odstraňte je na jednom řádku pomocí docker container rm $(docker container ls -aq) . docker container příkaz používá q přepněte, abyste nevraceli kontejnery do konzoly. Jakmile Docker shromáždí všechny kontejnery, spustí docker container rm proti každému.

Odebrání kontejnerů Docker pomocí pravidel filtrování

Možná máte mnoho různých nádob a jejich odstranění podle ID by byla bolest. Pokud mají všechny společné vlastnosti, můžete vytvořit filtr, který odstraní pouze kontejnery odpovídající konkrétnímu dotazu.

Chcete-li odebrat více kontejnerů odpovídajících konkrétnímu dotazu, použijte filter parametr nebo příznak filtrování na docker container prune příkaz. Tento parametr umožňuje zadat buď until atribut k filtrovacím kontejnerům vytvořeným před datem nebo label argument pro přiřazení kontejnerů s/bez konkrétního štítku.

Můžete například odstranit všechny zastavené kontejnery, které byly vytvořeny déle než 10h před spuštěním příkazu níže.

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

Zadejte Y potvrďte odstranění kontejneru Docker, jak je znázorněno níže. Po dokončení odstranění uvidíte, které kontejnery byly odstraněny, a celkový uvolněný prostor.

Vyčištění kontejnerů pomocí vnoření příkazů Docker

Všechny předchozí příkazy vyžadovaly, abyste předem zastavili každý kontejner. Ale co když kontejnery běží? Místo toho, abyste zastavovali každý kontejner jednotlivě, můžete místo toho vnořit příkazy Docker do příkazu pro odstranění, abyste zastavili všechny kontejnery a odstranili je současně.

Při odstraňování běžících nádob dodržujte zvláštní opatření. Odstranění může ovlivnit některé aplikace nebo procesy, které závisí na daném kontejneru Docker.

Vnořený docker ($(docker container ) níže uvedený příkaz vypíše všechny kontejnery tiše (-aq ) v paměti, včetně těch, které jsou aktuálně spuštěny. Seznam kontejnerů je poté předán vnějšímu docker příkaz k odstranění (rm ) kontejnery v seznamu.

Níže můžete vidět, že provedení vnořeného příkazu odstraní všechny kontejnery najednou, jak je znázorněno níže. Když tedy zkontrolujete seznam kontejnerů, nedostanete výstup, protože seznam je prázdný.

Automatické odstranění kontejnerů pomocí --rm Vlajka

Předchozí příkazy se používají k odstranění kontejnerů Docker pouze poté, co byl seznam Dockeru přeplněný. Proč ale čekat, až bude seznam Dockerů přeplněný? Jste-li pracovník typu „čistý za pochodu“, preventivní čištění máte na dosah pomocí --rm vlajka.

--rm příznak v docker run příkaz je užitečný, pokud věci na svém počítači jen na krátkou dobu testujete a nezpracováváte kritické soubory nebo nasazení v tomto kontejneru.

docker run syntaxe příkazu níže přidá kontejner Docker s názvem podle vašeho výběru (container_name ) a obrázek Dockeru (organization/base_image ) z knihovny Docker Hub. Ale pak --rm flag automaticky odstraní kontejner.

docker run --rm --name container_name organization/base_image

Vyčištění svazků dockeru

Docker se neskládá pouze z obrázků a kontejnerů. Ekosystém Docker se také skládá z úložných objemů. Stejnou obecnou metodou hledání ID a ořezávání položek můžete také vyčistit svazky úložiště.

Stejně jako u kontejnerů a obrázků spusťte docker volume ls zobrazíte všechna ID svazků, která máte v systému.

docker volume ls

Níže můžete vidět, že v tomto tutoriálu jsou uvedeny tři svazky.

Nyní spusťte docker příkaz níže k odstranění všech nepoužívaných svazků (volume prune ).

Chcete-li odebrat nepoužívané dockerové sítě, spusťte místo toho tento příkaz:docker network prune

docker volume prune

Níže vidíte, že příkaz odstraní všechny místní svazky, protože nebyly v době odstranění používány. Takže když vypíšete všechny svazky Dockeru, získáte pouze prázdný seznam tabulek.

Odstranění všech nepoužitých součástí Dockeru najednou

V průběhu tohoto kurzu jste vybírali a vybírali, které součásti Dockeru chcete odebrat. Možná pracujete v testovacím prostředí a chcete jen vyčistit vše najednou. Namísto čištění každé součásti samostatně, vyčistěte vše pomocí docker system prune !

docker system prune příkaz odstraní neběžící kontejnery, nepoužívané sítě, nepoužívané obrázky a mezipaměť sestavení pro stroj Docker.

docker system prune

Apřidejte -f příznak pro vynucení nebo potlačení varovných zpráv a potvrzení smazání prvků systému Docker, jako je tento:docker system prune -f

Níže můžete vidět výzvu s dotazem, zda chcete pokračovat v odstraňování prvků systému Docker nebo ne. Pro pokračování potvrďte zadáním Y.

Závěr

V tomto tutoriálu jste prozkoumali četné způsoby, jak vyčistit obrazy Docker pomocí docker image prune příkaz, odstranění kontejnerů pomocí docker container rm a další.

S těmito nově získanými znalostmi, proč nevyvinout své vlastní preferované metody čištění obrázků Docker? Možná vytvoření inventáře prostředků Docker nebo dobrého systému značkování, který vám umožní správně pojmenovat vaše projekty a vyhnout se mazání důležitých obrázků nebo kontejnerů?


Docker
  1. Jak přesunout obrazy Dockeru mezi hostiteli

  2. Vytvořte, označte a nahrajte svůj vlastní obrázek dockeru

  3. Jak nainstalovat Nextcloud s Dockerem na váš Linux Server

  1. Jak sdílet obrázky Docker s ostatními

  2. Jak upravit obrázky Docker

  3. Jak automaticky vytvářet a konfigurovat vlastní obrázky dockeru pomocí Dockerfile – část 3

  1. Docker Část 4:Vytváření a publikování vlastních obrázků dockeru

  2. Začínáme s předpřipravenými obrázky Docker

  3. Práce s Docker Images, Containers a DockerHub