首页/云/Docker 容器速查/ENV 与 RUN export 的区别
本包目录(366 条)
基础命令50 条
镜像与构建107 条
网络与存储52 条Compose 编排55 条资源与安全50 条容器排障52 条

ENV 与 RUN export 的区别

RUN 里的 export 只是当条命令的 shell 变量,下一条指令就消失;需要跨层、跨运行期的持久变量使用 ENV。

Docker 容器速查云更新于 2026-10-12
RUN export仅当前 shell 会话有效
ENV写入镜像配置,后续层与运行时都生效
跨阶段ENV 在阶段内生效;跨阶段值需显式传递

示例

示例
RUN export FOO=bar && echo "$FOO"   # 仅本行有效
ENV FOO=bar
RUN echo "$FOO"                     # 有效:/bin/sh -c 拿到 ENV
构建脚本里临时变量用 shell 变量即可;应用配置类变量统一走 ENV 或运行时注入。

易错点

  • 把 export 当持久化设置是常见误区,后续指令读不到时先检查这条
  • 构建阶段用 ENV 设置的变量会遗留到运行镜像里,多余变量会干扰应用配置优先级

数据来源与参考

  • Docker 官方文档:Dockerfile ENV(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌