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.
👍 38
🔥 10
7
13 131 4.1K

Обсуждение 13

Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.

Обсудить в Telegram