在 CentOS(以及一般 Linux 系统)上,“隔离进程环境”常见有几种层次,从轻量到强隔离依次是:
Linux namespace 可以隔离:
unshare 快速隔离unshare --fork --pid --mount-proc bash
效果:
ps 只看到自己常用组合:
unshare --fork --pid --mount --net --uts bash
systemd 隔离服务进程(推荐服务器使用)CentOS 7/8 默认使用 systemd,可以很方便地隔离服务。
[Service]
ProtectSystem=strict
PrivateTmp=true
NoNewPrivileges=true
RestrictAddressFamilies=AF_INET
MemoryMax=512M
CPUQuota=50%
启用:
systemctl edit myapp.service
✅ 优点:
chroot 做文件系统隔离(简单但不安全)mkdir /opt/jail
cp -r /bin /lib /lib64 /opt/jail
chroot /opt/jail bash
⚠ 注意:
docker run -it --rm \
--network none \
--memory 512m \
--cpus 1 \
centos bash
podman run -it --rm centos bash
✅ 容器隔离内容包括:
查看 cgroup:
systemctl cgls
手动限制:
cgcreate -g memory,cpu:/mygroup
echo 512M > /sys/fs/cgroup/memory/mygroup/memory.limit_in_bytes
CentOS 默认开启 SELinux:
getenforce
可限制:
| 场景 | 推荐方式 |
|---|---|
| 临时测试 | unshare |
| 服务运行 | systemd |
| 应用打包 | Docker / Podman |
| 高安全 | namespace + SELinux + cgroups |
| 简单隔离 | chroot(不推荐单独) |
如果你能说明:
我可以给你更精确的命令或配置示例。