Ну а додаткові дзвінки називаються ізоляцією процесу, контейнер отримує власний простір імен з ядра хоста, це означає, що програма в контейнері не може намагатися читати пам'ять ядра або їсти більше оперативної пам'яті, ніж дозволено.
Він також ізолює мережеві стеки, тож два процеси можуть прослуховувати порт 8080 для приклад, вам доведеться обробляти маршрутизацію на рівні хоста, тут немає ніякої магії, але це дозволяє обробляти маршрутизацію в одному місці і уникати зміни конфігурації процесу на слухати вільний порт.
По-друге, chroot все ще читається / записується, будь-яка зміна є постійною, використовуючи контейнер docker aufs
, починається з чистої файлової системи щоразу, коли ви запускаєте контейнер (зміни зберігаються, якщо ви зупиняєте / запускаєте його IIRC).
Тож хоча контейнер можна вважати як process namespace
+ chroot
, реальність трохи складніша.