Docker: namespaces и cgroups
Когда контейнер падает с OOMKilled или порт не пробрасывается, не нужно гадать: это обычный Linux-процесс, который ядро ограничивает двумя механизмами. Namespaces дают ему изолированный вид — свой PID 1, таблицу маршрутизации и интерфейсы, mount-точки. Cgroups выставляют жёсткие лимиты на CPU, память и I/O, чтобы один контейнер не уложил хост.
Посмотреть на изоляцию помогает
. Docker связывает контейнер через veth: один конец на мосте
, другой в namespace. За лимитами отвечают cgroups, которые Docker задаёт через
.
Понимание этих двух механизмов спасает от «почему работает локально, а в проде падает». При инциденте смотрите сначала на них, а не на приложение.
📌 Подробнее: https://dev.to/doogal/how-docker-actually-works-a-deep-dive-into-namespaces-and-cgroups-5h3e
MemOps🤨
Когда контейнер падает с OOMKilled или порт не пробрасывается, не нужно гадать: это обычный Linux-процесс, который ядро ограничивает двумя механизмами. Namespaces дают ему изолированный вид — свой PID 1, таблицу маршрутизации и интерфейсы, mount-точки. Cgroups выставляют жёсткие лимиты на CPU, память и I/O, чтобы один контейнер не уложил хост.
Посмотреть на изоляцию помогает
unshare. Docker связывает контейнер через veth: один конец на мосте
docker0, другой в namespace. За лимитами отвечают cgroups, которые Docker задаёт через
docker run.
Понимание этих двух механизмов спасает от «почему работает локально, а в проде падает». При инциденте смотрите сначала на них, а не на приложение.
MemOps
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3