用于与嵌入式应用程序进行进程树隔离的最小 system-nspawn 容器

用于与嵌入式应用程序进行进程树隔离的最小 system-nspawn 容器

是否可以将 nspawn 用于单个可执行文件?我的目标只是隔离应用程序的进程树,而不是可移植性。

假设您用 C 编写了一个为您的目标平台构建的应用程序。今天,我可以通过 systemd 单元文件进行配置,将其作为 systemd 服务运行。有没有办法为我的应用程序制作一个最小的 nspawn“容器”?我读过的所有文章都表明 nspawn 需要 debianbootstrap,最终导致文件大小接近 300mb。如果我不关心可移植性,是否有其他方法可以利用 nspawn 的进程树隔离功能?

答案1

你读过systemd-nspawn手册页?其中没有任何内容表明您需要 debianbootstrap,事实上它显示了几个非 debian 示例。

根文件系统,但就像 Docker 容器(甚至传统chroot环境)一样,除了可执行文件和任何共享库或运行所需的其他资源之外,不需要任何其他东西。

如果你只是想要进程树隔离,也许不是systemd-nspawn你想要的unshare

# unshare --pid --fork --mount-proc bash
# ps -fe
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  4 09:49 pts/0    00:00:00 bash
root        24     1  0 09:49 pts/0    00:00:00 ps -fe

相关内容