Schijfruimtegebruik controleren voor Docker-afbeeldingen en containers

0
155

Met gecontaineriseerde applicaties die in geïsoleerde omgevingen draaien, kan het moeilijker zijn dan normaal om problemen opsporen met toepassingen die te veel opslagruimte gebruiken. Gelukkig biedt Docker opdrachten voor het beheren van het gebruik van containerschijven.

Een snelle controle uitvoeren

En als u wilt controleren hoeveel ruimte Docker gebruikt, je kunt de ingebouwde opdracht docker system df gebruiken, evenals de Linux-opdracht du om de grootte van de hele map te krijgen.

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

Deze opdracht toont statische afbeeldingen, containers die wijzigingen hebben aangebracht in hun bestandssysteem (bijv. bestanden) en volumes die aan de containers zijn gebonden.

Dit is echter niet helemaal correct hier, ik heb veel containers draaien, maar ze slaan allemaal gegevens op in bind-mounts op het host-besturingssysteem, niet op volumes.

Docker-afbeeldingen opschonen

Docker-afbeeldingen zijn anders dan het uitvoeren van containers; het zijn de bestanden die u downloadt van de Docker Hub om een ​​container van te starten. Ze zijn meestal behoorlijk groot en bevatten alle benodigde code om een ​​basisbesturingssysteem en uw toepassing uit te voeren.

Advertentie

Elke versie van een afbeelding is afzonderlijk, maar wordt opgeslagen in lagen, dus meerdere nieuwe versies nemen niet twee keer zoveel opslagruimte in beslag. U kunt alle afbeeldingen bekijken met afbeelding ls:

docker afbeelding ls

Het schoonmaken hiervan is eenvoudig; je wilt natuurlijk geen afbeeldingen van actieve containers verwijderen, maar het verwijderen van oude afbeeldingen is prima. afbeeldingen, of verwijder er handmatig een op ID:

docker image prune -a docker image rm 3a8d8f76e7f8f

Lopend containergebruik controleren

Containers zijn wat lastiger op te sporen, omdat ze gegevens op veel verschillende manieren kunnen gebruiken:

  • Onderliggende afbeelding: elke container moet zijn afbeelding opslaan, maar deze wordt hergebruikt in verschillende containers.
  • Modificatielaag: als een container naar zijn bestandssysteem schrijft, zoals logbestanden, wordt opgeslagen in een nieuwe laag bovenop de onderliggende afbeelding. Dit is uniek voor elke container.
  • Volumes: containers kunnen virtuele schijven erop hebben gemonteerd, die gegevens direct op schijf buiten het Docker-opslagsysteem opslaan.
  • Inbindbevestigingen: containers hebben optioneel rechtstreeks toegang tot mappen op de host.

Alles behalve bind-mounts wordt weergegeven in de df-uitvoer van het docker-systeem. Als u statistieken voor elke container wilt bekijken, biedt Docker een vlag voor de ps-opdracht om het gebruik weer te geven:

docker ps –size

Hier wordt de grootte op de schijf weergegeven, evenals de virtuele grootte (inclusief de gedeelde onderliggende afbeelding). Aangezien deze containers geen opslag gebruiken buiten hun bind-mounts, is de grootte nul bytes.

Debuggen van mounts (bindingen en volumes)

Debuggen van mounts (bindingen en volumes)

h2>

Om het gebruik van mounts te bekijken, voor zowel direct bind-mounts als beheerde volumes, moet je de grootte ervan opvragen bij het host-besturingssysteem. Als je niet weet waar ze zijn, kun je docker container ls uitvoeren om de ID van een container te krijgen en vervolgens docker inspect uitvoeren om de mount-info te verkrijgen:

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

Vervolgens kunt u de totale grootte controleren met du -sh:

sudo du -sh /path/to/mount/

Containers en volumes snoeien

Docker verwijdert nooit containers of volumes (tenzij u voer containers uit met de vlag –rm), omdat u hierdoor uw gegevens kunt verliezen. Er kan echter een back-up van oude gegevens worden gemaakt die moet worden verzameld.

Net als afbeeldingen, biedt Docker een prune-opdracht voor containers en volumes:

docker container prune docker volume prune

Handmatig debuggen

Als je directe toegang hebt tot de server waarop Docker draait, kun je een shell in de container openen:

sudo docker exec – it containerID /bin/bash

en voer du -sh op het hele ding uit, waarmee alle gegevens worden geretourneerd, inclusief de afbeeldingsgrootte, gegevens over bind-mounts en gegevens in volumes.

sudo du -sh /