mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-08-10 00:17:23 +00:00
第 18、21 章的工作流示例仍用 actions/checkout@v6 与 actions/upload-artifact@v4,
而上游当前大版本分别是 v7.0.1(2026-07-20)与 v7.0.1(2026-04-10);本仓库自己的
.github/workflows/* 早已按 SHA 钉在 v7.0.1 上,书里教的和书自己在跑的不一致。
21.2 更是同一个文件内自相矛盾:第 27/108 行写 @v6,第 59 行却钉着 v7.0.0 的 SHA。
sigstore/cosign-installer 一并从 @v3 提到 @v4.1.2:官方 v4.0.0 发布说明写明
"You must upgrade to cosign-installer v4 if you want to install Cosign v3+",
而 18.6 手工安装那段用的是 releases/latest(今天就是 Cosign 3.x),两条路径装的
不是同一个大版本。该仓库没有可移动的 v4 标签,只能引用完整版本号,已就地加注说明。
docker/{build-push,setup-buildx,login}-action、anchore/sbom-action@v0、
github/codeql-action@v3 逐一核对后确认仍是当前受支持版本,未改动;
trivy-action 的 SHA 57a97c7e 经 GitHub API 核对确与 v0.35.0 一致,注释无误。
第十八章 安全
容器安全是生产环境部署的核心考量。本章介绍 Docker 的安全机制和最佳实践。
容器安全的本质
核心问题:容器共享宿主机内核,隔离性弱于虚拟机。如何在便利性和安全性之间取得平衡?
flowchart LR
subgraph VM ["虚拟机安全模型:<br/>完全隔离(性能损耗)"]
direction TB
Guest["Guest OS"]
Hyper["Hypervisor<br/><-- 隔离边界"]
Host["Host OS"]
Guest --> Hyper --> Host
end
subgraph Container ["容器安全模型:<br/>进程隔离(轻量但需加固)"]
direction TB
Proc["容器进程<br/>(共享内核)"]
Mech["Namespace <-- 隔离边界<br/>Cgroups<br/>Capabilities"]
Proc --> Mech
end
本章内容
本章涵盖 Docker 安全的多个层面,从内核隔离机制到运行时防护和供应链安全。
-
- 命名空间的安全意义、User Namespace 与提权防护。
-
- 通过 Cgroups 限制容器资源使用,防止资源耗尽攻击。
-
- Docker 守护进程的安全配置与网络访问控制。
-
- Linux Capabilities 的细粒度权限控制。
-
- 镜像安全(漏洞扫描、签名验证)、运行时安全(非 root 运行、只读文件系统、Seccomp、AppArmor)、Dockerfile 安全实践、软件供应链安全(SBOM、SLSA)。
-
- 容器镜像的安全扫描、漏洞检测与签名验证。
安全扫描清单
部署前检查:
| 检查项 | 命令/方法 |
|---|---|
| 漏洞扫描 | docker scout cves 或 trivy |
| 非 root 运行 | 检查 Dockerfile 中的 USER |
| 资源限制 | 检查 -m, --cpus 参数 |
| 只读文件系统 | 检查 --read-only |
| 无特权模式 | 确认没有 --privileged |
| 最小能力 | 检查 --cap-drop=all |
| 网络隔离 | 检查网络配置 |
| 敏感信息 | 确认无硬编码密码 |