Hoe Docker-afbeeldingen, containers en volumes te verwijderen

Inleiding

Docker maakt het gemakkelijk om uw toepassingen en diensten in containers te verpakken, zodat u ze overal kunt uitvoeren. Echter, wanneer u met Docker werkt, is het ook gemakkelijk om een overmatige hoeveelheid ongebruikte afbeeldingen, containers en gegevensvolumes op te bouwen die de output rommelig maken en schijfruimte innemen.

Docker geeft u alle tools die u nodig hebt om uw systeem vanaf de opdrachtregel op te ruimen. Deze handleiding in cheat sheet-stijl biedt een snelle referentie naar opdrachten die nuttig zijn om schijfruimte vrij te maken en uw systeem georganiseerd te houden door ongebruikte Docker-afbeeldingen, containers en volumes te verwijderen.

Hoe deze handleiding te gebruiken:

  • Deze handleiding is in cheat sheet-formaat met zelfvoorzienende opdrachtregel snippets.
  • Ga naar een sectie die relevant is voor de taak die u probeert te voltooien.

Opmerking: De syntaxis voor opdrachtvervanging, opdracht $(opdracht), die in de opdrachten wordt gebruikt, is beschikbaar in veel populaire shells, zoals bash, zsh, en Windows Powershell.Als u een 1-klik manier wilt om een Docker-toepassing naar een live-server te implementeren, neem dan een kijkje bij DigitalOcean App Platform.

Als je een manier met één klik wilt hebben om een Docker-toepassing te implementeren op een live server, kijk dan eens naar DigitalOcean App Platform.

Opruimen van alle ongebruikte of hangende afbeeldingen, containers, volumes en netwerken

Docker biedt een enkele opdracht die alle resources opruimt – afbeeldingen, containers, volumes en netwerken – die hangend zijn (niet getagd of geassocieerd met een container):

docker system prune

Om bovendien alle gestopte containers en alle ongebruikte afbeeldingen (niet alleen hangende afbeeldingen) te verwijderen, voeg je de -a vlag toe aan de opdracht:

docker system prune -a

Verwijderen van Docker-afbeeldingen

Een of meer specifieke afbeeldingen verwijderen

Gebruik de docker images opdracht met de -a vlag om de ID van de afbeeldingen te vinden die u wilt verwijderen. Dit laat u elke afbeelding zien, inclusief tussenliggende afbeeldingslagen. Als u de afbeeldingen gevonden heeft die u wilt verwijderen, kunt u hun ID of tag doorgeven aan docker rmi:

Lijst:

docker images -a

Verwijderen:

docker rmi Image Image

Opmerking: De -a of --all vlag in de docker images opdracht toont alle Docker-afbeeldingen, inclusief tussenliggende die niet door enige tags worden aangegeven. Standaard toont docker images alleen de afbeeldingen met minstens één tag. Er kunnen echter wel afbeeldingen zijn zonder enige tags die nog steeds schijfruimte innemen op het systeem. De -a vlag kan handig zijn bij het identificeren van afbeeldingen die kunnen worden geprunt om schijfruimte te besparen. Wanneer gebruikt met de docker rmi opdracht, kan de -f of --force vlag ook worden gebruikt om afbeeldingen zonder tags te verwijderen.

Dangling Docker Images Verwijderen

Docker-afbeeldingen bestaan uit meerdere lagen. Dangling-afbeeldingen zijn lagen die geen relatie hebben met enige getagde afbeeldingen. Ze dienen geen doel meer en nemen schijfruimte in beslag. Ze kunnen worden gevonden door de filtervlag -f met een waarde van dangling=true toe te voegen aan de docker images opdracht. Wanneer u ervoor zeker bent dat u ze wilt verwijderen, kunt u de docker image prune opdracht gebruiken:

Opmerking: Als u een afbeelding bouwt zonder deze te taggen, verschijnt de afbeelding op de lijst van losse afbeeldingen omdat deze niet is gekoppeld aan een getagde afbeelding. U kunt deze situatie vermijden door een tag te geven bij het bouwen, en u kunt een afbeelding achteraf taggen met het docker tag commando.

Lijst:

docker images -f dangling=true

Verwijderen:

docker image prune

Afbeeldingen verwijderen op basis van een patroon

U kunt alle afbeeldingen vinden die overeenkomen met een patroon door een combinatie van docker images en grep te gebruiken. Zodra u tevreden bent, kunt u ze verwijderen door awk te gebruiken om de ID’s door te geven aan docker rmi. Merk op dat deze hulpprogramma’s niet worden meegeleverd door Docker en niet noodzakelijk beschikbaar zijn op alle systemen:

Lijst:

docker images -a |  grep "pattern"

Verwijderen:

docker images -a | grep "pattern" | awk '{print $1":"$2}' | xargs docker rmi

Verwijder alle afbeeldingen

Alle Docker-afbeeldingen op een systeem kunnen worden vermeld door -a toe te voegen aan het docker images-commando. Als je zeker weet dat je ze allemaal wilt verwijderen, kun je de -q-vlag toevoegen om de afbeeldings-ID door te geven aan docker rmi:

Lijst:

docker images -a

Verwijderen:

docker rmi $(docker images -a -q)

Containers verwijderen

Verwijder één of meer specifieke containers

Gebruik het docker ps-commando met de -a-vlag om de naam of ID van de containers die je wilt verwijderen te vinden:

Lijst:

docker ps -a

Verwijderen:

docker rm ID_or_Name ID_or_Name

Verwijder een container bij het afsluiten

Als je weet dat je een container wilt verwijderen zodra je klaar bent, kun je docker run --rm uitvoeren om deze automatisch te verwijderen wanneer deze wordt afgesloten:

Uitvoeren en verwijderen:

docker run --rm image_name

Verwijder alle gestopte containers

Je kunt containers vinden met behulp van docker ps -a en ze filteren op hun status: aangemaakt, herstarten, draaiend, gepauzeerd of gestopt. Om de lijst met gestopte containers te bekijken, gebruik je de -f-vlag om te filteren op status. Als je hebt geverifieerd dat je die containers wilt verwijderen, gebruik dan -q om de ID’s door te geven aan het docker rm-commando:

Lijst:

docker ps -a -f status=exited

Verwijderen:

docker rm $(docker ps -a -f status=exited -q)

Verwijder containers met meer dan één filter

Dockerfilters kunnen worden gecombineerd door de filtervlag te herhalen met een extra waarde. Dit resulteert in een lijst van containers die aan een van beide voorwaarden voldoen. Als je bijvoorbeeld alle containers wilt verwijderen die zijn gemarkeerd als aangemaakt (een status die kan optreden wanneer je een container uitvoert met een ongeldige opdracht) of beëindigd, kun je twee filters gebruiken:

Lijst:

docker ps -a -f status=exited -f status=created

Verwijderen:

docker rm $(docker ps -a -f status=exited -f status=created -q)

Verwijder containers volgens een patroon

Je kunt alle containers die overeenkomen met een patroon vinden door een combinatie van docker ps en grep te gebruiken. Wanneer je tevreden bent dat je de lijst hebt die je wilt verwijderen, kun je awk en xargs gebruiken om de ID aan docker rm te leveren. Let op dat deze hulpprogramma’s niet worden geleverd door Docker en niet noodzakelijkerwijs beschikbaar zijn op alle systemen:

Lijst:

docker ps -a |  grep "pattern

Verwijderen:

docker ps -a | grep "pattern" | awk '{print $1}' | xargs docker rm

Stop en verwijder alle containers

U kunt de containers op uw systeem bekijken met docker ps. Het toevoegen van de -a vlag zal alle containers tonen. Wanneer u zeker weet dat u ze wilt verwijderen, kunt u de -q vlag toevoegen om de ID’s te leveren aan de docker stop en docker rm commando’s:

Lijst:

docker ps -a

Verwijderen:

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)

Volumes verwijderen

Verwijder een of meer specifieke volumes

Gebruik het docker volume ls commando om de volumenaam of namen te vinden die u wilt verwijderen. Vervolgens kunt u een of meer volumes verwijderen met het docker volume rm commando:

Lijst:

docker volume ls

Verwijderen:

docker volume rm volume_name volume_name

Verwijder hangende volumes

Omdat het doel van volumes is om onafhankelijk van containers te bestaan, wordt een volume niet automatisch verwijderd wanneer een container wordt verwijderd. Wanneer een volume bestaat en niet langer is verbonden met een container, wordt het een hangend volume genoemd. Om ze te lokaliseren en te bevestigen dat je ze wilt verwijderen, kun je het docker volume ls-commando gebruiken met een filter om de resultaten te beperken tot hangende volumes. Wanneer je tevreden bent met de lijst, kun je ze allemaal verwijderen met docker volume prune:

Lijst:

docker volume ls -f dangling=true

Verwijderen:

docker volume prune

Verwijder een container en zijn volume

Als je een naamloos volume maakt, kan het tegelijkertijd met de container worden verwijderd met de -v-vlag. Let op dat dit alleen werkt met naamloze volumes. Wanneer de container succesvol is verwijderd, wordt de ID ervan weergegeven. Let op dat er geen melding wordt gemaakt van het verwijderen van het volume. Als het naamloos is, wordt het stil verwijderd uit het systeem. Als het benoemd is, blijft het stil aanwezig.

Verwijderen:

docker rm -v container_name

Conclusie

Deze handleiding behandelt enkele van de gebruikelijke commando’s die worden gebruikt om afbeeldingen, containers en volumes te verwijderen met Docker. Er zijn veel andere combinaties en vlaggen die met elk kunnen worden gebruikt. Voor een uitgebreide handleiding over wat beschikbaar is, zie de Docker-documentatie voor docker system prune, docker rmi, docker rm en docker volume rm. Als er veelvoorkomende opruimtaken zijn die u in de handleiding wilt zien, vraag dan of geef suggesties in de opmerkingen.

Voor een gedetailleerde blik op de verschillende componenten van een Docker-container, bekijk De Docker-ecosysteem: Een inleiding tot gemeenschappelijke componenten.

Source:
https://www.digitalocean.com/community/tutorials/how-to-remove-docker-images-containers-and-volumes