温馨提示×

centos怎么隔离进程环境

小樊
46
2026-10-12 01:12:17
栏目: 智能运维

在 CentOS(以及一般 Linux 系统)上,“隔离进程环境”常见有几种层次,从轻量到强隔离依次是:


一、用 namespace 做基础隔离(最常用)

Linux namespace 可以隔离:

  • PID(进程)
  • Mount(文件系统)
  • Network(网络)
  • IPC / UTS / User 等

1️⃣ 使用 unshare 快速隔离

unshare --fork --pid --mount-proc bash

效果:

  • 新 shell 中 ps 只看到自己
  • PID 从 1 开始

常用组合:

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 / Podman)做强隔离(最常用)

Docker 示例

docker run -it --rm \
  --network none \
  --memory 512m \
  --cpus 1 \
  centos bash

Podman(CentOS 推荐,无 daemon)

podman run -it --rm centos bash

✅ 容器隔离内容包括:

  • 文件系统
  • 网络
  • 进程
  • 用户(可配合 userns)

五、用 cgroups 限制资源(配合 namespace)

查看 cgroup:

systemctl cgls

手动限制:

cgcreate -g memory,cpu:/mygroup
echo 512M > /sys/fs/cgroup/memory/mygroup/memory.limit_in_bytes

六、用 SELinux 做安全隔离(CentOS 特色)

CentOS 默认开启 SELinux:

getenforce

可限制:

  • 进程能访问哪些文件
  • 网络端口
  • 系统调用

七、不同场景推荐方案

场景 推荐方式
临时测试 unshare
服务运行 systemd
应用打包 Docker / Podman
高安全 namespace + SELinux + cgroups
简单隔离 chroot(不推荐单独)

如果你能说明:

  • ✅ 是想限制资源还是安全隔离
  • ✅ 是一次性命令还是长期服务
  • ✅ CentOS 版本(7 / 8 / Stream)

我可以给你更精确的命令或配置示例。

0 踩