在 CentOS 上使用 Docker 时,保障安全需要从系统层、Docker 本身、镜像、容器运行、权限和网络多个维度来做。下面给你一份比较实用、可落地的“CentOS + Docker 安全加固清单”。
yum update -y
并开启自动安全更新(可选):
yum install yum-cron -y
systemctl enable --now yum-cron
systemctl enable --now firewalld
firewall-cmd --add-port=22/tcp --permanent
firewall-cmd --reload
vi /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
systemctl restart sshd
不要用系统旧版 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
useradd dockeruser
usermod -aG docker dockeruser
⚠️ 注意:docker 组 ≈ root 权限,所以要控制账号。
❌ 千万不要:
-H tcp://0.0.0.0:2375
✅ 正确方式:
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
docker pull xxx/unknowndocker scan 镜像名
或用:
❌ nginx:latest
✅ nginx:1.25.3
❌
docker run --privileged
✅
docker run --cap-drop ALL
Dockerfile 中:
USER appuser
或运行参数:
docker run -u 1000:1000
docker run --read-only
docker run \
--memory=512m \
--cpus=1 \
--pids-limit=100
Docker 默认已启用,可加强:
docker run --security-opt seccomp=profile.json
❌
-p 0.0.0.0:8080:8080
✅
-p 127.0.0.1:8080:8080
docker network create app-net
docker run --network app-net
services:
web:
image: nginx:1.25.3
read_only: true
user: "1000:1000"
cap_drop:
- ALL
mem_limit: 512m
CentOS + Docker 安全核心: 不用 root → 不用特权 → 不用 latest → 不暴露端口 → 限制资源 → 扫描镜像
如果你愿意,我可以:
你现在是学习 / 测试 / 生产环境?