Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Dockerfile(15) - ARG 指令详解

Dockerfile(15) - ARG 指令详解

作者头像
小菠萝测试笔记
发布于 2021-11-02 08:20:06
发布于 2021-11-02 08:20:06
4.8K00
代码可运行
举报
运行总次数:0
代码可运行

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 指令中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ARG DOCKER_USERNAME=library

FROM ${DOCKER_USERNAME}/alpine

RUN set -x ; echo ${DOCKER_USERNAME}
  • 使用上述 Dockerfile 会发现无法输出 ${DOCKER_USERNAME} 变量的值
  • 要想正常输出,必须在 FROM 之后再次指定 ARG
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 只在 FROM 中生效
ARG DOCKER_USERNAME=library

FROM ${DOCKER_USERNAME}/alpine

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

RUN set -x ; echo ${DOCKER_USERNAME}

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 这个变量在每个 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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-10-31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
docker | dockerfile指令详解
Dockerfile用于构建docker镜像, 实际上就是把在linux下的命令操作写到了Dockerfile中, 通过Dockerfile去执行设置好的操作命令, 保证通过Dockerfile的构建镜像是一致的.
Amadeus
2023/04/17
1.9K0
Dockerfile命令(下)
但是如果在运行时加上新的命令,则Dockerfile中的CMD的命令将会被替代掉。
清风穆云
2021/08/09
6290
Docker系列学习文章 - 专业化定制镜像dockerfile(六)
| 导语上一篇我们跟大家讲了docker镜像,关于镜像的特点和作用我想大家都明白了。那么如何比较专业的去定制我们需要的镜像呢?用commit?不对,我们说过这个方法比较黑盒。真正专业高大上的方法是用d
宝哥@上云专家
2018/05/07
3.3K11
DockerFile就这么简单
当我们在使用docker时,最重要的就是镜像,只要有了镜像,我们就可以随时随地的根据镜像来创建一个容器,从而做到让我们的服务可以在任何时间任何地点任何环境下运行起来。那么镜像是怎么制作的呢?总体来讲,制作镜像有两种方法:
后场技术
2020/09/03
1.7K0
DockerFile就这么简单
docker实践(2)常用命令和DockerFile详解
1、获取:docker pull centos获取镜像 #从官方仓库注册服务器下载镜像
黄规速
2022/04/14
7590
docker实践(2)常用命令和DockerFile详解
Dockerfile文件万字全面解析
Dockerfile是一个文本文件,包含一些Docker指令。执行docker build,Docker就会执行Dockerfile里面的指令,来自动创建镜像。
dongfanger
2020/09/23
2.8K0
Dockerfile文件万字全面解析
使用Dockerfile
在前面我们简单提到了如何使用Dockerfile文件来创建镜像,鉴于这种方式在日常工作中使用的较为频繁,因此这里专门拿出一篇文章来研究如何使用Dockerfile配置文件来创建镜像。这里会介绍Dockerfile比较典型的基本结构及其支持的众多指令,然后通过这些指令来编写定制镜像的Dockerfile文件,接着便使用该Dockerfile文件来生成镜像,最后会结合笔者自身工作经验来谈谈一些使用Dockerfile的最佳实践。
啃饼思录
2021/01/12
8650
Alpine 系统配置记录
Alpine 的意思是“高山的”,比如 Alpine plants高山植物,Alpine skiing高山滑雪、the alpine resort阿尔卑斯山胜地。
全栈工程师修炼指南
2022/09/28
2.2K0
Alpine 系统配置记录
Dockerfile文件编写官方文档 原
英文原文链接地址: Engine reference–>Dockerfile reference
拓荒者
2019/03/11
1K0
【云原生 | Docker篇】实战Dockerfile(五)
Dockerfile基础知识已经在上一篇做了详细介绍,如果还不是很清楚的同学可以点击传送门再复习一遍。
Lansonli
2022/05/11
8470
【云原生 | Docker篇】实战Dockerfile(五)
Docker命令使用经验总结
Docker作为现在常用的服务部署方式,日常工作中免不了要做些build、push之类的操作。为了避免每次都要查文档,这里将一些常用的命令和技巧做一些总结。
drunkdream
2020/01/02
5920
【云原生 | Docker篇】深入Dockerfile(四)
用 VOLUME 声明了卷,那么以后对于卷内容的修改会被丢弃,所以, 一定在volume声明之前修改内容 ;
Lansonli
2022/05/02
1.5K0
【云原生 | Docker篇】深入Dockerfile(四)
Dockerfile 指令
1、Dockerfile基本结构 Dockerfile由一行行命令语句组成,并且支持以#开头的注释行。
小手冰凉
2020/08/06
5030
Dockerfile 指令
Docker学习——Dockerfile 指令详解(五) 顶
我们已经介绍了 FROM (指定基础镜像) , RUN(执行命令) ,还提及了 COPY , ADD ,其实 Dockerfile 功能很强大,它提供了十多个指令。下面我们继续讲解其他的指令。
wuweixiang
2018/12/07
1.6K0
Docker实践之03-Dockerfile指令详解
所谓定制镜像,那一定是以一个镜像为基础,在其上进行定制。就像我们之前运行了一个nginx镜像的容器,再进行修改一样,基础镜像是必须指定的。而FROM就是指定基础镜像,因此一个Dockerfile中FROM是必备的指令,并且必须是第一条指令。
编程随笔
2019/06/27
9810
Docker实践之03-Dockerfile指令详解
Docker Dockerfile 指令详解与实战案例
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
踏歌行
2020/10/15
1.9K0
Docker Dockerfile 指令详解与实战案例
docker容器dockerfile详解
Dockerfile是一个镜像构建命令集合的文本文件,下面是我们最常见的Dockerfile构建,假如我们目录下有一个文件Dockerfile
用户8851537
2021/08/20
1.5K0
解读三组容易混淆的Dockerfile指令
COPY、ADD主体功能类似:从指定位置src拷贝文件到Docker镜像dest。
有态度的马甲
2020/06/10
1.1K0
掌握了这篇 Dockerfile 中的 ARG 作用域, 就算 Build 镜像 CI 入门了 【文末抽奖】
之前我们讨论了 面试问 Dockerfile 的优化, 千万不要只会说减少层数[1], 详细说明 Dockerfile 的优化原理和操作方法, 给大家概括了 简单易记 的口诀。
老麦
2023/02/25
1.8K0
掌握了这篇 Dockerfile 中的 ARG 作用域, 就算 Build 镜像 CI 入门了 【文末抽奖】
掌握这 5 个技巧,让你的 Dockerfile 像个大师!
Docker 是一种容器技术,它可以在操作系统上创建多个相互隔离的容器。容器内独立安装软件、运行服务。
神说要有光zxg
2023/08/29
5790
掌握这 5 个技巧,让你的 Dockerfile 像个大师!
相关推荐
docker | dockerfile指令详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验