Docker容器安全加固核心是按“镜像—运行时—宿主机”三层做减法:镜像层精简可信基础镜像、禁用ADD与硬编码密钥、强制漏洞扫描;运行时层以非root用户启动、drop所有能力后按需添加、根文件系统只读、tmpfs挂载临时目录;宿主机层启用TLS认证与auditd审计、限制资源、隔离网络,并通过镜像签名、统一日志和凭证轮换实现持续运营闭环。

直接上核心:Docker 容器安全加固不是堆功能,而是按“镜像—运行时—宿主机”三层做减法和约束。重点不在加多少防护,而在砍掉多少默认高危配置。
镜像层:从源头掐断风险
基础镜像必须精简可信:
- 优先用 alpine:latest 或 distroless 镜像,避免 ubuntu/debian 等带完整包管理器的臃肿镜像
- Dockerfile 中禁用
ADD(易引入不可信远程文件),改用COPY+ 显式校验 - 禁止硬编码密钥、token、密码;敏感配置通过挂载 secret 或环境变量注入(且宿主机端做好权限控制)
- 构建后立即用 Trivy 或 Clair 扫描 CVE,CVSS ≥7.0 的漏洞必须阻断上线
运行时层:非 root + 最小能力 + 只读根
容器启动时必须显式降权:
- 在 Dockerfile 中创建非 root 用户并切换:
RUN adduser -u 1001 -D appuser && USER appuser - 启动命令禁用特权:
--privileged绝对禁用;改用--cap-drop=ALL --cap-add=NET_BIND_SERVICE按需授权 - 根文件系统设为只读:
--read-only;如需写入,仅挂载最小必要目录(如-v /app/logs:/app/logs) - 临时目录用内存卷:
--tmpfs /tmp --tmpfs /run,防止恶意持久化
宿主机层:审计+隔离+资源围栏
守护进程和系统本身要兜底:
- 启用 Docker TLS 认证,禁用未加密的 Unix socket 直连;生产环境必须配置
daemon.json中的tls和证书路径 - 开启 Linux auditd,对
/usr/bin/docker、/var/lib/docker、/etc/docker/daemon.json等关键路径加审计规则 - 限制容器资源:用
--memory=512m --cpus=1.0 --pids-limit=100防止 DoS - 网络强制走自定义 bridge 网络,禁用
--network=host;跨容器通信通过服务发现而非 IP 直连
持续运营:签名+日志+自动响应
安全不是一次配置,而是闭环机制:
- 所有镜像必须签名:Harbor 启用 Notary,或用
cosign sign;拉取时强制验证签名(DOCKER_CONTENT_TRUST=1) - 容器日志统一接入 ELK 或 Loki,关键操作(start/stop/exec)全部审计记录
- 健康检查脚本需白名单校验,禁止执行任意 shell 命令;探针路径不得暴露敏感接口
- 定期轮换镜像凭证、API token,并将 Docker 用户组权限严格收敛——仅运维必需人员加入


















