Middle
Čo sa stane s kontajnerom, ak bude prekročen limit pamäte?
sobes.tech AI
Odpoveď od AI
Keď je prekročený limit pamäte nastavený pre Docker kontajner, dochádza k nasledujúcim hlavným udalostiam:
- Udalosť OOM (Out of Memory): Jadro operačného systému zistí, že proces vnútri kontajnera sa pokúša alokovať pamäť, ktorá presahuje stanovený limit.
- Signál Killed: Jadro odošle procesu vnútri kontajnera signál
SIGKILL. Tento signál nemôže byť zachytený alebo ignorovaný aplikáciou bežiacou v kontajneri. - Ukončenie kontajnera: Proces vnútri kontajnera je nútene ukončený. Demon Docker zistí, že hlavný proces kontajnera skončil, a zmení stav kontajnera na
Exited. - Kód ukončenia: Kontajner skončí s nenulovým kódom ukončenia (zvyčajne 137), čo naznačuje, že bol nútene ukončený signálom.
Dôsledky pre aplikáciu a systém:
- Aplikácia bežiaca v kontajneri sa náhle ukončí.
- Ak je nastavená politika reštartu (
restart policy), Docker sa pokúsi kontajner reštartovať. - V logoch kontajnera a/alebo hostiteľa bude zaznamenané udalosti OOM a ukončenie kontajnera.
Príklad nastavenia limitu pamäte:
# Príklad Docker Compose
services:
myapp:
image: myimage
mem_limit: 512m # Nastaví limit pamäte na 512 MB
# Príklad príkazu Docker
docker run -m 512m myimage # Nastaví limit pamäte na 512 MB