温馨提示×

centos docker怎么保安全

小樊
43
2026-10-23 08:48:13
栏目: 智能运维

在 CentOS 上使用 Docker 时,保障安全需要从系统层、Docker 本身、镜像、容器运行、权限和网络多个维度来做。下面给你一份比较实用、可落地的“CentOS + Docker 安全加固清单”。


一、系统层安全(CentOS)

1. 及时更新系统

yum update -y

并开启自动安全更新(可选):

yum install yum-cron -y
systemctl enable --now yum-cron

2. 最小化安装

  • 不用 GUI
  • 关闭无用服务(如 FTP、Telnet)
  • 只装 Docker 必要依赖

3. 使用防火墙(firewalld)

systemctl enable --now firewalld
firewall-cmd --add-port=22/tcp --permanent
firewall-cmd --reload

4. 禁止 root 直接 SSH(推荐)

vi /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
systemctl restart sshd

二、Docker 安装与配置安全

1. 使用官方源安装 Docker

不要用系统旧版 docker(CentOS 7 的很老):

yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io -y

2. 以非 root 用户管理 Docker(重要)

useradd dockeruser
usermod -aG docker dockeruser

⚠️ 注意:docker 组 ≈ root 权限,所以要控制账号。


三、Docker 守护进程安全

1. 限制 Docker API 暴露

❌ 千万不要:

-H tcp://0.0.0.0:2375

✅ 正确方式:

  • 只用 unix socket
  • 或用 TLS + 防火墙限制 IP

2. 开启 Docker 日志审计

mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}
EOF
systemctl restart docker

四、镜像安全

1. 只用可信镜像

  • 官方镜像(nginx, redis, mysql)
  • 私有仓库(Harbor)
  • 不用 docker pull xxx/unknown

2. 镜像漏洞扫描

docker scan 镜像名

或用:

  • Trivy
  • Clair

3. 固定镜像版本

❌ nginx:latest ✅ nginx:1.25.3


五、容器运行安全(非常重要)

1. 禁止特权容器

❌

docker run --privileged

✅

docker run --cap-drop ALL

2. 以非 root 用户运行

Dockerfile 中:

USER appuser

或运行参数:

docker run -u 1000:1000

3. 只读文件系统

docker run --read-only

4. 限制资源

docker run \
  --memory=512m \
  --cpus=1 \
  --pids-limit=100

5. 限制系统调用(seccomp)

Docker 默认已启用,可加强:

docker run --security-opt seccomp=profile.json

六、网络安全

1. 不暴露不必要端口

❌

-p 0.0.0.0:8080:8080

✅

-p 127.0.0.1:8080:8080

2. 使用自定义网络

docker network create app-net
docker run --network app-net

七、使用 Docker Compose 时的安全

services:
  web:
    image: nginx:1.25.3
    read_only: true
    user: "1000:1000"
    cap_drop:
      - ALL
    mem_limit: 512m

八、进阶(生产推荐)

  • ✅ 使用 Podman(无 daemon,更安全)
  • ✅ 使用 SELinux + Docker
  • ✅ 使用 Kubernetes + RBAC
  • ✅ 使用 Harbor + 镜像签名

九、一句话总结

CentOS + Docker 安全核心: 不用 root → 不用特权 → 不用 latest → 不暴露端口 → 限制资源 → 扫描镜像

如果你愿意,我可以:

  • 帮你写一份 生产级 daemon.json
  • 或针对 Web / 数据库 / 微服务 给具体 Docker 安全示例
  • 或对比 Docker vs Podman 安全性

你现在是学习 / 测试 / 生产环境?

0 踩