Это хороший вопрос, но на него очень трудно ответить, потому что он очень открытый.
Сосредоточившись на части «код может выполняться в корневом пространстве имен», это зависит от того, что вы подразумеваете под «кодом»:
То, что #2 выше, означает, что они осведомлены о пространстве имен -посредством абстракций процесса -. т.е. их запись в таблице процессов указывает на части пространства имен (, например. корневая файловая система ), прямо или косвенно. С этого момента, пока что-то на стороне ядра -работает, оно должно быть «изолировано», потому что оно всегда будет обращаться к правильному набору данных.
Однако это не означает, что ошибки не могут повлиять на все аспекты работающей системы, включая другие контейнеры.
Если вы хотите запустить что-то в изолированной системе, вам понадобится полнофункциональная виртуальная машина или Linux в пользовательском пространстве. Контейнеры предназначены для изоляции процессов и того, что они видят и к чему могут получить доступ. Когда есть ошибка, они могут выйти за пределы своих ограничений, точно так же, как обычный процесс может в конечном итоге запустить код от имени пользователя root.
[1] Почти все, что связано с системой, делается с помощью системных вызовов. Например. открытие файла, запись в сокет, отправка сигнала и т. д.