栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Dockerfile(15) - ARG 指令详解

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Dockerfile(15) - ARG 指令详解

ARG

作用:定义创建镜像过程中使用的变量

格式: ARG [=

详解
  • 在执行 docker build 时,可以通过 --build-arg <参数名>=<值> 来为声明的变量赋值
  • 当镜像编译成功后,ARG 指定的变量将不再存在(ENV指定的变量将在镜像中保留)
  • Docker内置了一些镜像创建变量,用户可以直接使用而无须声明,包括(不区分大小写)HTTP_PROXY、HTTPS_PROXY、FTP_PROXY、NO_PROXY
ARG 和 ENV 的区别
  • ARG 定义的变量只会存在于镜像构建过程,启动容器后并不保留这些变量
  • ENV 定义的变量在启动容器后仍然保留
注意

不要通过 ARG 保存密码之类的信息,因为  docker history  还是可以看到所有值的

ARG 指令有生效范围

如果在 FROM 指令之前指定,那么只能用于 FROM 指令中

ARG DOCKER_USERNAME=library

FROM ${DOCKER_USERNAME}/alpine

RUN set -x ; echo ${DOCKER_USERNAME}
  •  使用上述 Dockerfile 会发现无法输出 ${DOCKER_USERNAME} 变量的值
  • 要想正常输出,必须在 FROM 之后再次指定 ARG
# 只在 FROM 中生效
ARG DOCKER_USERNAME=library

FROM ${DOCKER_USERNAME}/alpine

# 要想在 FROM 之后使用,必须再次指定
ARG DOCKER_USERNAME=library

RUN set -x ; echo ${DOCKER_USERNAME}

多阶段构建的时候,ARG 定义的变量,每个 FROM 都能用

# 这个变量在每个 FROM 中都生效
ARG DOCKER_USERNAME=library

FROM ${DOCKER_USERNAME}/alpine

RUN set -x ; echo 1

FROM ${DOCKER_USERNAME}/alpine

RUN set -x ; echo 2
ARG 其他用法

暂时不举例了,感觉应该不会用很多

https://docs.docker.com/engine/reference/builder/#arg

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/422949.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号