Если вы хоть раз запускали docker exec -it container id и видели uid=0(root), наверняка возникала мысль: ну всё, внутри контейнера точно такой же всемогущий root, как на голом сервере, просто в отдельной коробочке. Это не так, и не так уже больше двадцати лет — с тех пор, как в ядре Linux появился механизм capabilities. Именно он превращает «root внутри контейнера» из абсолютной власти в набор из полутора десятков конкретных, поимённо перечисленных прав. Разберём, как это устроено на уровне ядра, что входит в контейнер по умолчанию и что root физически…
Подробнее →