Docker 改变了软件交付方式,但在生产中使用容器需要纪律。大型图像会增加存储成本和部署时间,而漏洞可能会使您的环境遭受攻击。本指南介绍了确保轻量级、安全且可版本控制的映像的最佳实践。
基本的良好实践
- 多阶段构建,在一个阶段编译代码并仅复制最终工件。
- 简约基础镜像,首选 2 或 3 来减少攻击面。
- 切勿包含凭据,4 文件、密钥或令牌切勿复制到映像中。
- 以非 root 用户身份运行,创建专用用户并配置容器以使用它。
- 没有5的版本,使用语义标签(6)进行追溯和回滚。
多阶段 Dockerfile (Node.js) 的精益示例,9 行
0
图像安全检查表
- 使用 Trivy、Clair 或 Snyk 扫描漏洞。
- 检查不必要的层 (7)。
- 在 Dockerfile 中定义非 root 用户。
- 删除临时文件 (8)。
- 使用 Docker Content Trust 签署镜像以确保完整性。
版本控制策略
| 标签 | 何时使用 |
|---|---|
| 9 | 稳定发布,兼容semver。 |
| 10 | 发布候选版本以供测试。 |
| 11 | CI 自动化构建,可追溯。 |
简化的 CI/CD 集成 (GitHub Actions),7 行
1
结论
通过应用这些实践,您可以获得更小、更安全和易于版本控制的映像,从而降低运营成本并减轻生产中的漏洞风险。
您已经采用了哪些 Docker 策略?在评论中分享!
另请阅读
- [生产中的 Kubernetes:迁移之前没有人告诉你的事情12
- [现代 CI/CD:自信部署的艺术13
- [生产中的 Cloudflare Workers:hello world 之后发生了什么变化14
- [生产中的 D1:性能、限制以及无法单独扩展的内容15
- [生产中的耐用物品:法案将是什么样子以及令人惊讶的限制16
- [在生产中实施功能标记和逐步推出17
