素材阁

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 参数与最佳实践;支持搜索与分类筛选,点击即可复制。

  1. 按用途点分类:基础指令、复制文件、构建指令、运行与元信息、build 参数、最佳实践。
  2. 点「指令」列复制,替换镜像名、路径与文件名后放进 Dockerfile。
  3. 开发时先 COPY 依赖清单(如 package.json)再 RUN 安装,最后 COPY 源码,能更好利用构建缓存。
  4. 用多阶段构建把编译环境与运行环境分开,只把产物复制到最终镜像。

常见问题

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 里指定。

延伸阅读

相关工具