Files
nodebestpractices/sections/docker/generic-tips.chinese.md
2021-07-19 23:05:53 +08:00

30 lines
1.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[✔]: ../../assets/images/checkbox-small-blue.png
# 通用的Node.js Docker最佳实践
此通用Docker指南部分包含所有编程语言中标准化的最佳实践并没有针对Node.js的特殊解释
## ![✔] 使用命令COPY优于ADD
**TL;DR:** COPY更安全因为它只复制本地文件而ADD支持更高级的获取比如从远程站点下载二进制文件
## ![✔] 避免更新基础OS
**TL;DR:** 在构建期间更新本地二进制文件例如apt get update会在每次运行时创建不一致的映像并且还需要提升权限。取而代之使用经常更新的基础镜像
## ![✔] 使用标签对镜像分类
**TL;DR:** 为每个镜像提供元数据metadata可能有助于Ops专业人员充分处理它。例如包括维护人员姓名、构建日期和其他信息当有人需要对映像进行推理时这些信息可能会被证明是有用的
## ![✔] 使用非特权容器
**TL;DR:** 特权容器具有与主机上的根用户相同的权限和功能。这是很少需要的作为一个经验法则应该使用在官方Node镜像中创建的'node'用户
## ![✔] 检查并验证最终结果
**TL;DR:** 有时很容易忽略构建过程中的副作用,如泄露的秘密或不必要的文件。使用[Dive](https://github.com/wagoodman/dive)等工具检查生成的镜像可以很容易地帮助识别此类问题
## ![✔] 执行完整性检查
**TL;DR:** 在拉取基本镜像或最终镜像时网络可能会被误导并重定向到下载恶意镜像。除非对内容进行签名和验证否则标准Docker协议中没有任何内容可以防止这种情况。[Docker Notary](https://docs.docker.com/notary/getting_started/)是一个可以执行此类检查的工具