是否可以将 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