docker容器安全加固核心是减法思维:非root运行、cap_drop all后按需添加能力、根文件系统只读、资源硬限制、精简镜像及启用镜像签名与漏洞扫描。

直接上手做 Docker 容器安全加固,核心是“减法思维”:去掉不必要的权限、限制运行环境、堵住常见攻击入口。不靠堆配置,而靠精准控制。
非 root 用户运行容器
这是最基础也最关键的一步。默认 root 运行等于把容器钥匙直接交给攻击者。
- 在 Dockerfile 中创建专用用户,并切换过去:
RUN adduser -D appuser && chown -R appuser /appUSER appuser - 避免使用
USER root或省略 USER 指令 - 确认应用能正常加载配置和写日志目录(提前
chown相关路径)
能力(Capabilities)最小化配置
Docker 默认保留约 14 项基础能力,cap_add 是加法,cap_drop 才是安全起点。
- 先丢弃全部能力:
cap_drop: ["ALL"] - 再按需添加单个能力,例如绑定 80 端口只需:
cap_add: ["NET_BIND_SERVICE"] - 绝对避免
privileged: true和高危能力如SYS_ADMIN、NET_ADMIN、SYS_MODULE - 配合
security_opt: ["no-new-privileges:true"]防止进程后续提权
文件系统与运行时隔离
让容器“动不了、改不了、逃不出”。
- 根文件系统设为只读:
--read-only或 Compose 中read_only: true - 敏感挂载路径强制只读:
-v /proc:/proc:ro -v /sys:/sys:ro - 禁用新命名空间创建(可选但推荐):
--userns=host或宿主机内核参数user.max_namespaces=0 - 资源硬限制防 DoS:
--memory=512m --cpus=1.0 --pids-limit=100
网络与镜像源头控制
从构建到运行,切断不安全的输入通道。
- 使用精简基础镜像(Alpine 或 distroless),禁用包管理器:
apk --no-cache add - 禁止 ADD 指令,改用 COPY;敏感信息不进镜像,通过 secret 或 volume 注入
- 启用镜像签名验证(Docker Content Trust)和自动漏洞扫描(Trivy/Harbor Clair)
- 生产网络用自定义 bridge 并开启
--internal,关闭 IP 转发:--opt com.docker.network.bridge.enable_ip_forwarding=false
不复杂但容易忽略——每一条配置都在缩小攻击面,而不是增加一层“防护壳”。真正有效的加固,是让漏洞即使存在,也没法被利用。











