Middle
Wat gebeurt er met de container als de geheugenlimiet wordt overschreden?
sobes.tech AI
Antwoord van AI
Wanneer de voor een Docker-container ingestelde geheugenlimiet wordt overschreden, gebeuren de volgende hoofdgebeurtenissen:
- OOM (Out of Memory) Gebeurtenis: De kernel van het besturingssysteem detecteert dat een proces binnen de container probeert geheugen toe te wijzen dat de ingestelde limiet overschrijdt.
- Signaal Killed: De kernel stuurt een
SIGKILL-signaal naar het proces binnen de container. Dit signaal kan niet worden opgevangen of genegeerd door de applicatie die in de container draait. - Beëindiging van de container: Het proces binnen de container wordt geforceerd beëindigd. De Docker-daemon detecteert dat het hoofdproces van de container is beëindigd en wijzigt de status van de container naar
Exited. - Uitgangscode: De container eindigt met een niet-nul uitgangscode (meestal 137), wat aangeeft dat hij geforceerd is beëindigd door het signaal.
Gevolgen voor de applicatie en het systeem:
- De applicatie die in de container draait, wordt abrupt beëindigd.
- Als er een herstartbeleid (
restart policy) is ingesteld, probeert Docker de container opnieuw te starten. - In de logs van de container en/of host wordt het OOM-evenement en de beëindiging van de container geregistreerd.
Voorbeeld van het instellen van een geheugenlimiet:
# Docker Compose voorbeeld
services:
myapp:
image: myimage
mem_limit: 512m # Stelt een geheugenlimiet van 512 MB in
# Docker run voorbeeld
docker run -m 512m myimage # Stelt een geheugenlimiet van 512 MB in