Dockerfile 指令速查
共 32 条 Dockerfile 指令,覆盖基础指令、复制文件、构建指令、运行与元信息、 docker build 参数与最佳实践六组场景。支持搜索与分类筛选,点击即可复制。
基础指令
指定基础镜像、构建参数与运行环境。
| 指令 | 说明 |
|---|---|
| 指定基础镜像(多阶段可多次出现) | |
| 命名一个构建阶段,便于多阶段复用 | |
| 构建参数,构建时用 --build-arg 覆盖 | |
| 设置运行时环境变量(会保留在镜像里) | |
| 设置后续指令的工作目录(自动创建) | |
| 切换运行用户(用非 root 更安全) | |
| 添加镜像元数据标签 |
复制文件
把构建上下文里的文件放进镜像。
| 指令 | 说明 |
|---|---|
| 复制文件 / 目录到镜像内 | |
| 复制时指定属主属组 | |
| 从另一个构建阶段复制产物 | |
| ADD 会自动解压本地 tar 与支持远程 URL(优先用 COPY) | |
| 排除 node_modules、.git 等,减小上下文与镜像 |
构建指令
RUN 执行命令并产生新层。
| 指令 | 说明 |
|---|---|
| 构建时执行命令(每层会缓存) | |
| 合并命令并清理,减少层数与体积 | |
| BuildKit 缓存挂载,加速依赖安装 |
运行与元信息
容器启动行为与对外声明。
| 指令 | 说明 |
|---|---|
| 默认启动命令(可被 docker run 的参数覆盖,只应出现一次) | |
| 固定入口,参数作为其附加参数 | |
| 声明服务端口(仅文档作用,映射仍靠 -p) | |
| 声明数据卷挂载点 | |
| 定义健康检查指令 | |
| 指定停止容器时发送的信号 | |
| 两者组合:ENTRYPOINT 定程序,CMD 给默认参数 |
docker build 常用参数
构建镜像时的命令行开关。
| 指令 | 说明 |
|---|---|
| 构建并打标签 | |
| 传入构建参数 | |
| 只构建到某个阶段(如 builder) | |
| 多架构构建 | |
| 不使用缓存强制重建 |
最佳实践
更小、更安全、更快的镜像。
| 指令 | 说明 |
|---|---|
| 镜像只保留运行所需,体积大幅减小 | |
| 基础镜像越小,最终镜像越小 | |
| 依赖不变时能命中缓存,加速重复构建 | |
| 降低容器被攻破后的权限风险 | |
| 构建上下文更小,构建更快更省 |
使用说明
Dockerfile 指令速查:基础指令、复制文件、构建指令、运行与元信息、docker build 参数与最佳实践;支持搜索与分类筛选,点击即可复制。
- 按用途点分类:基础指令、复制文件、构建指令、运行与元信息、build 参数、最佳实践。
- 点「指令」列复制,替换镜像名、路径与文件名后放进 Dockerfile。
- 开发时先 COPY 依赖清单(如 package.json)再 RUN 安装,最后 COPY 源码,能更好利用构建缓存。
- 用多阶段构建把编译环境与运行环境分开,只把产物复制到最终镜像。
常见问题
- CMD 和 ENTRYPOINT 有什么区别?
- ENTRYPOINT 定义容器启动时固定的程序,参数追加在其后;CMD 提供默认参数或默认命令,且会被 docker run 后面的参数覆盖。常见组合是 ENTRYPOINT 定程序、CMD 给默认参数。
- COPY 和 ADD 有什么区别?
- ADD 额外支持自动解压本地 tar 和从 URL 下载,行为不直观;除这两种场景外都应使用 COPY,语义更清晰、更可预测。
- 为什么镜像那么大,怎么瘦身?
- 常见做法:用 slim / alpine 基础镜像、多阶段构建只保留运行产物、合并 RUN 并清理缓存(如 rm -rf /var/lib/apt/lists/*)、用 .dockerignore 排除无关文件。
- EXPOSE 会真的开放端口吗?
- 不会,EXPOSE 只是文档化声明。真正对外映射端口要在 docker run -p 或 Compose 的 ports 里指定。
延伸阅读
相关工具
VRCL
Vercel 速查
vercel deploy / vercel.json / env 速查
NTLF
Netlify 速查
netlify deploy / netlify.toml / Functions 速查
CFW
Cloudflare Workers 速查
wrangler dev / wrangler.toml / bindings 速查
CCI
CircleCI 速查
config.yml / jobs / workflows / orb 速查
TVS
Travis CI 速查
.travis.yml / language / script / deploy 速查
DRNE
Drone CI 速查
.drone.yml / pipeline / steps / plugins 速查