Hur man kontrollerar användning av hårddiskutrymme för Docker -bilder och behållare

0
142

Med containeriserade applikationer som körs i isolerade miljöer kan det vara svårare än vanligt att spåra problem med applikationer som använder för mycket lagringsutrymme. Lyckligtvis tillhandahåller Docker kommandon för hantering av behållaranvändning.

Gör en snabbkontroll

Och om du vill kontrollera hur mycket utrymme Docker använder kan du använda det inbyggda kommandodockersystemet df, liksom Linux -kommandot du för att få storleken på hela katalogen.

dockersystem df sudo du -sh/var/lib/docker/< p>

Detta kommando visar statiska bilder, behållare som har gjort ändringar i filsystemet (t.ex. logg filer) och volymer bundna till behållarna.

Detta är dock inte helt korrekt — här har jag många behållare igång, men de lagrar alla data i bindfästen på värd-operativsystemet, inte volymer.

Rengöring av Docker-bilder

Dockerbilder är annorlunda än att köra behållare; de är filerna som du laddar ner från Docker Hub för att starta en behållare från. De är vanligtvis ganska stora och innehåller all nödvändig kod för att köra ett grundläggande operativsystem och din applikation.

Annonsering

Varje version av en bild är separat, men den lagras i lager, så att flera nya versioner inte tar upp dubbelt så mycket lagringsutrymme. Du kan se alla bilder med image ls:

docker image ls

Rengöring av dessa är enkelt; du vill naturligtvis inte ta bort bilder på behållare som körs, men att ta bort gamla bilder går bra att ladda ner igen när det behövs.

Du kan beskära alla bilder, eller radera en manuellt med ID:

docker image prune -a docker image rm 3a8d8f76e7f8f

Kontroll av användning av körande behållare

Behållare är lite svårare att spåra, eftersom de kan använda data på många olika sätt:

  • Underliggande bild : varje behållare måste lagra sin bild, men den återanvänds över behållare.
  • Ändringslager : om en behållare skriver till sitt filsystem, till exempel loggfiler, kommer det att sparas i ett nytt lager ovanpå den underliggande bilden. Detta är unikt för varje behållare.
  • Volymer : behållare kan ha virtuella enheter monterade på dem, som lagrar data direkt på disken utanför Docker -lagringssystemet.
  • Bind fästen : behållare kan valfritt komma åt kataloger på värden direkt.

Allt utom bindfästen visas i dockersystemets df -utdata. Om du vill visa statistik för varje behållare tillhandahåller Docker en flagga för kommandot ps för att lista användningen:

docker ps –size

Här visar storleken på disken, liksom den virtuella storleken (som inkluderar den delade underliggande bilden). Eftersom dessa behållare inte använder någon lagring utanför sina bindfästen är storleken noll byte.

Felsökningsfästen (bindningar och volymer)

För att kunna se monteringsanvändning, för både direktbindningsfästen och hanterade volymer, måste du få storleken på dem från värd -operativsystemet. Om du inte vet var de är kan du köra docker container ls för att få en behållares ID och sedan köra docker inspect för att ta tag i infon:

docker inspektera a1c904020044 -f '{{json .Mounts}}' [{“Type”: “bind”, “Source”: “/home/daemon-data/921ff235-5075-4d64-b977-8d02cc3dacc9”, “Destination” : “/home/container”, “Mode”: “”, “RW”: true, “Propagation”: “rprivate”}] Annons

Sedan kan du kontrollera den totala storleken med du -sh:

sudo du -sh/path/to/mount/

Beskär behållare och volymer

Docker tar aldrig bort behållare eller volymer (om du inte kör behållare med –rm -flaggan), eftersom det kan förlora dina data. Du kan dock ha säkerhetskopierad gammal data som måste samlas in skräp.

Precis som bilder ger Docker ett beskärningskommando för behållare och volymer:

docker container prune docker volume prune

Manuell felsökning

Om du har direktåtkomst till servern som kör Docker kan du öppna ett skal i behållaren:

sudo docker exec – det containerID /bin /bash

och kör du -sh på det hela, vilket returnerar all data, inklusive bildstorlek, data om bindfästen och data i volymer.

sudo du -sh /