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 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):
Om bovendien alle gestopte containers en alle ongebruikte afbeeldingen (niet alleen hangende afbeeldingen) te verwijderen, voeg je de -a
vlag toe aan de opdracht:
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:
Verwijderen:
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:
Verwijderen:
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:
Verwijderen:
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:
Verwijderen:
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:
Verwijderen:
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:
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:
Verwijderen:
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:
Verwijderen:
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:
Verwijderen:
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:
Verwijderen:
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:
Verwijderen:
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:
Verwijderen:
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:
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