Dockerfile(15) - ARG 指令详解

简介: Dockerfile(15) - ARG 指令详解

ARG


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

格式: ARG <name>[=<default value>]

 

详解

  • 在执行 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

相关文章
|
存储 Ubuntu 数据库
Dockerfile(14) - VOLUME 指令详解
Dockerfile(14) - VOLUME 指令详解
5370 0
|
Kubernetes 负载均衡 应用服务中间件
【K8S系列】第十三讲:Ingress详解
【K8S系列】第十三讲:Ingress详解
8093 0
|
Linux 开发工具 Docker
Docker——配置国内源
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 1、创建或修改daemon.json daemon.json 文件路径为:/etc/docker/daemon.
Docker——配置国内源
|
12月前
|
缓存 Prometheus 监控
Elasticsearch集群JVM调优设置合适的堆内存大小
Elasticsearch集群JVM调优设置合适的堆内存大小
1977 1
|
Kubernetes 监控 Cloud Native
|
11月前
|
Java Maven
Maven编译报错:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile 解决方案
在执行Maven项目中的`install`命令时,遇到编译插件版本不匹配的错误。具体报错为:`maven-compiler-plugin:3.13.0`要求Maven版本至少为3.6.3。解决方案是将Maven版本升级到3.6.3或降低插件版本。本文详细介绍了如何下载、解压并配置Maven 3.6.3,包括环境变量设置和IDEA中的Maven配置,确保项目顺利编译。
12235 5
Maven编译报错:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile 解决方案
|
缓存 前端开发 API
|
存储 监控 Java
Zipkin/Pinpoint/SkyWalking全面对比
【11月更文挑战第1天】这里重点从探针的性能、Collector的可扩展性、调用链路分析、完整的应用拓扑、对于科技人员使用友好程度(部署安装、埋点接入、使用管理)几个方面来进行对比。
|
网络安全
出现“Host key verification failed”错误--解决
遇到“Host key verification failed”错误,通常是因为远程主机密钥发生变化,与本地保存的信息不符。这种情况可能是远程主机系统更改或重装等原因导致的。解决方法是根据提示使用`ssh-keygen -f "/root/.ssh/known_hosts" -R "[10.61.0.152]:29022"`命令移除旧的密钥信息,然后重新尝试连接。
2423 5
|
Kubernetes 搜索推荐 Docker
Kubernetes容器运行时:Containerd vs Docke
Kubernetes容器运行时:Containerd vs Docke
1535 5