Files
docker_practice/07_dockerfile/summary.md
2026-02-21 16:43:31 -08:00

7.3 KiB
Raw Blame History

本章小结

相关信息如下表:

要点 说明
作用 设置后续指令的工作目录
语法 WORKDIR /path
自动创建 目录不存在会自动创建
持久性 影响后续所有指令,直到下次 WORKDIR
不要用 RUN cd /path (无效)

延伸阅读

要点 说明
作用 切换后续指令的执行用户
语法 USER usernameUSER UID:GID
前提 用户必须已存在
运行时覆盖 docker run -u
切换工具 使用 gosu不用 su/sudo

延伸阅读

要点 说明
作用 检测容器应用是否真实可用
命令 HEALTHCHECK [选项] CMD command
状态 starting, healthy, unhealthy
Compose 支持 condition: service_healthy 依赖
注意 避免副作用,节省资源

延伸阅读

要点 说明
作用 定义在子镜像构建时执行的指令
语法 ONBUILD INSTRUCTION
适用 基础架构镜像 (Node, Python, Go 等)
限制 只继承一次,不可级联
规范 建议使用 -onbuild 标签后缀

延伸阅读

要点 说明
作用 添加 key-value 元数据
语法 LABEL k=v k=v ...
规范 推荐使用 OCI 标准标签
弃用 不要再使用 MAINTAINER
查看 docker inspect

延伸阅读

要点 说明
作用 更改 RUN/CMD/ENTRYPOINT 的默认 shell
Linux 默认 ["/bin/sh", "-c"]
Windows 默认 ["cmd", "/S", "/C"]
推荐用法 SHELL ["/bin/bash", "-o", "pipefail", "-c"]
影响范围 后续所有使用 shell 格式的指令

延伸阅读

要点 说明
作用 在新层执行命令
原则 合并命令,清理缓存
格式 Shell (常用) vs Exec
陷阱 cd 不持久,环境变量不持久
进阶 使用 Cache Mount 加速构建

延伸阅读

操作 示例
复制文件 COPY app.js /app/
复制多个文件 COPY *.json /app/
复制目录内容 COPY src/ /app/src/
修改所有者 COPY --chown=node:node . /app/
从构建阶段复制 COPY --from=builder /app/dist ./

延伸阅读

场景 推荐指令
复制普通文件 COPY
复制目录 COPY
自动解压 tar ADD
从 URL 下载 RUN curl
保持 tar 不解压 COPY

延伸阅读

要点 说明
作用 指定容器启动时的默认命令
推荐格式 exec 格式 CMD ["程序", "参数"]
覆盖方式 docker run image 新命令
与 ENTRYPOINT CMD 作为 ENTRYPOINT 的默认参数
核心原则 应用必须在前台运行

延伸阅读

ENTRYPOINT CMD 适用场景
镜像作为固定命令使用
简单的默认命令
推荐:固定命令 + 可配置参数

延伸阅读

要点 说明
语法 ENV KEY=value
作用范围 构建时 + 运行时
覆盖方式 docker run -e KEY=value
与 ARG ARG 仅构建时ENV 持久化到运行时
安全 不要存储敏感信息

延伸阅读

要点 说明
作用 定义构建时变量
语法 ARG NAME=value
覆盖 docker build --build-arg NAME=value
作用域 FROM 之后需要重新声明
vs ENV ARG 仅构建时ENV 构建+运行时
安全 不要存储敏感信息

延伸阅读

要点 说明
作用 创建挂载点,标记为外部卷
语法 VOLUME /path
默认行为 自动创建匿名卷
覆盖方式 docker run -v name:/path
注意 VOLUME 之后的修改会丢失

延伸阅读

要点 说明
作用 声明容器提供服务的端口 (文档)
不会 自动映射端口或开放外部访问
配合 docker run -P 自动映射
外部访问 需要 -p 宿主机端口:容器端口
语法 EXPOSE 80EXPOSE 80/tcp

延伸阅读