github编辑

ARG 构建参数

基本语法

ARG <参数名>[=<默认值>]

ARG 指令定义构建时的变量,可以在 docker build 时通过 --build-arg 传入。


ARG vs ENV

特性
ARG
ENV

生效时间

仅构建时

构建时 + 运行时

持久性

构建后消失

写入镜像

覆盖方式

docker build --build-arg

docker run -e

适用场景

构建参数(版本号等)

应用配置

可见性

docker history 可见

docker inspect 可见

构建时                         运行时
├─ ARG VERSION=1.0             │ (ARG 已消失)
├─ ENV APP_ENV=prod            │ APP_ENV=prod(仍存在)
└─ RUN echo $VERSION           │

⚠️ 安全提示:不要用 ARG 传递密码等敏感信息,docker history 可以查看所有 ARG 值。


基本用法

定义和使用

构建时覆盖


ARG 的作用域

FROM 之前的 ARG

FROM 之后重新声明

多阶段构建中的 ARG


常见使用场景

1. 控制基础镜像版本

2. 设置软件版本

3. 配置构建环境

4. 配置私有仓库


将 ARG 传递给 ENV

如果需要在运行时使用 ARG 的值:


预定义 ARG

Docker 提供了一些预定义的 ARG,无需声明即可使用:

ARG
说明

HTTP_PROXY

HTTP 代理

HTTPS_PROXY

HTTPS 代理

NO_PROXY

不使用代理的地址

FTP_PROXY

FTP 代理


最佳实践

1. 为 ARG 提供合理默认值

2. 不要用 ARG 存储敏感信息

3. 使用 ARG 提高构建灵活性


本章小结

要点
说明

作用

定义构建时变量

语法

ARG NAME=value

覆盖

docker build --build-arg NAME=value

作用域

FROM 之后需要重新声明

vs ENV

ARG 仅构建时,ENV 构建+运行时

安全

不要存储敏感信息

延伸阅读

最后更新于