systemd-nspawn 是 systemd 自带的轻量级容器工具,基于 rootfs 和内核命名空间运行,无需 Docker 或 Podman,适合 NAS、嵌入式及边缘环境部署隔离服务。

systemd-nspawn 是 systemd 自带的轻量级容器工具,不依赖 Docker 或 Podman,直接基于 rootfs 和内核命名空间运行,适合快速部署隔离服务。它启动快、开销低、配置透明,特别适合在 NAS、嵌入式或生产边缘环境中运行后台服务。
准备基础根文件系统
容器需要一个完整的 Linux 根目录(rootfs)。推荐用发行版官方工具生成:
- Debian/Ubuntu:用 debootstrap 创建最小系统
sudo debootstrap --arch=amd64 bookworm /var/lib/machines/myapp - CentOS/RHEL:用 yum --installroot 或 dnf --installroot
sudo dnf --installroot=/var/lib/machines/myapp --releasever=9 -y install systemd passwd bash vim-minimal - 确保 rootfs 中有 /sbin/init 或 /lib/systemd/systemd,否则无法用
-b启动 systemd
启动并管理单次容器服务
直接运行容器,适合调试或临时服务:
AI 领域系统学习体系。管理知识图谱、深度学习笔记、实战复盘和关联网络。触发场景:学习计划、知识图谱更新、深度研究某个 AI 主题、实战复盘总结、调研后沉淀知识、每周学习回顾。当用户说'学了什么'、'总结一下'、'沉淀知识'、'复盘'、'更新图谱'、'深入研究'、'写笔记'、'学习回顾'、'review what...
- 进入交互式 shell:
sudo systemd-nspawn -D /var/lib/machines/myapp - 以 systemd 为 PID 1 启动完整服务环境:
sudo systemd-nspawn -D /var/lib/machines/myapp -b
(首次需先设 root 密码:sudo systemd-nspawn -D /var/lib/machines/myapp passwd) - 退出容器:按 Ctrl + ] ] ](连续敲三次右括号)
- 查看运行状态:
machinectl list或machinectl status myapp
作为长期服务自动运行
让容器随系统开机启动,等同于“守护进程”:
- 将 rootfs 放入标准路径(如
/var/lib/machines/myapp),systemd 会自动识别 - 启用开机自启:
sudo machinectl enable myapp
这会创建并启用systemd-nspawn@myapp.service - 手动启动/停止:
sudo machinectl start myappsudo machinectl stop myapp - 日志查看(宿主机视角):
journalctl -M myapp -u systemd或journalctl -M myapp
进阶配置与服务集成
通过 .nspawn 配置文件定制行为,提升稳定性与安全性:
- 在
/etc/systemd/nspawn/myapp.nspawn中写入:
[Exec]<br> CapabilityBoundingSet=CAP_NET_BIND_SERVICE CAP_SYS_TIME<br> NoNewPrivileges=yes<br> [Network]<br> PrivateUsers=yes<br> [Files]<br> Bind=/srv/myapp-data:/data:ro
- 绑定挂载宿主机目录(如数据卷、证书),无需修改镜像
- 禁用特权操作、限制能力集,比默认更安全
- 容器内可照常使用
systemctl enable nginx开机启动服务,它会在容器启动时自动拉起

















