Linux умеет запускать программы в почти контейнерной изоляции вообще без Docker.
За это отвечает `
unshare`.
Команда создает для процесса отдельные namespace: свой список процессов, свой mount-view, hostname, IPC, network и user namespace. В итоге программа видит не всю систему, а только ограниченный «кусок» окружения.
Пример:
sudo unshare --pid --fork --mount --uts --ipc --net --user --map-root-user --mount-proc bash
Внутри новой shell можно выполнить:
ps aux
И вместо сотен процессов увидеть почти пустую систему: bash с PID 1 и сам ps.
Это не Docker, не container runtime и не магия. Это базовый механизм ядра Linux, на котором контейнеры во многом и построены.
Полезно знать, если хотите понимать контейнеры не как «черный ящик», а на уровне того, что реально делает kernel.
Обсуждение 13
Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.
Обсудить в Telegram