在写Dockerfile时, ENV和ARG,包括.env都是很容易弄混的概念。让我们对其进行区分。

.env文件

和docker-compose.yml配合使用。并不和Dockerfile一起使用

env_file

在Dockerfile中使用,当环境变量很多,可使用该参数,指定对应的变量文件。

ARG

在Dockerfile中使用,仅在build docker image的过程中(包括CMD和ENTRYPOINT)有效,在image被创建和container启动之后,无效。

如果你在Dockerfile中使用了ARG但并未给定初始值,则在运行docker build(编译)的时候未指定该ARG变量,则会失败。

虽然其在container启动后不再生效,但是使用‘docker history’可以查看到。所以,敏感数据不建议使用ARG.

设置ARG和使用ARG编译image, 实例如下:

# In the Dockerfile
ARG some_variable_name
# or with a hard-coded default:
#ARG some_variable_name=default_value
RUN echo "Oh dang look at that $some_variable_name"
# In the shell command
docker build --build-arg some_variable_name=a_value
# Then you will get
Oh dang look at that a_value

ENV

在Dockerfile中使用,在build docker imag的过程中有效,在image被创建和container启动后作为环境变量依旧也有效,并且可以重写覆盖。printenv可查看其值。

设置ENV和使用env,实例如下

# no default value
ENV hey
# a default value
ENV foo /bar
# or ENV foo=/bar
# ENV values can be used during the build
ADD . $foo
# or ADD . ${foo}
# translates to: ADD . /bar
# Use the following docker commands to set env
docker run -e "env_var_name=another_value" alpine env
docker run -e env_var_name alpine env
docker run --env-file=env_file_name alpine env

有时候,ARG和ENV一起使用,实例如下图:

# expect a build-time variable
ARG A_VARIABLE
# use the value to set the ENV var default
ENV an_env_var=$A_VARIABLE
# if not overridden, that value of an_env_var will be available to your containers!

参考

https://vsupalov.com/docker-arg-env-variable-guide/#arg-and-env-availability

Dockerfile ENV和ARG的区别与应用相关推荐

  1. Dockerfiles ENV和ARG的应用

    https://vsupalov.com/docker-arg-env-variable-guide/#arg-and-env-availability 在写Dockerfile时, ENV和ARG, ...

  2. python中arg,*arg,**kwarg区别

    python中arg,*arg,**kwarg区别 1. *args(*的作用很重要) 首先要搞清楚*的意思和作用,有助于理解arg,*arg,**kwarg. (*是arg的前半部分,arg是后半部 ...

  3. Dockerfile ENV 使用指南

    当使用 Dockerfile 进行构建镜像时,有时会需要设置容器内的环境变量. ENV 指令的格式如下: ENV <key>=<value> ... ENV 指令将环境变量 & ...

  4. Dockerfile ENV指令 语法解析

      某些应用场景下,需要对Dokcer镜像加入环境变量,这时需要ENV指令.本文本来具体对ENV指令进行解析.   ENV 语法 ENV <key>=<value> ...   ...

  5. Dockerfile 中 CMD 写法的区别

    CSDN 中文章不一定能及时更新,欢迎点击前往我的博客查看最新版本:许盛的博客 Dockerfile 中的 CMD 是个非常重要的指令,主要用于为容器提供启动命令,但是写法上有好几种方式,一段时间不看 ...

  6. java comp env 区别_加和不加java:comp/env/前缀有什么区别?

    java:comp/env是标准的J2EE环境查找规则 使用这种方式必须做一次环境名到JNDI名的映射 这种隔离使得在写程序时不必关注真正的JNDI名字 其实说白了跟把JNDI名放到配置文件里是一样的 ...

  7. set,env,和export的区别

    每个shell都有自己特有的变量,这和用户变量是不同的.当前用户变量和你用什么shell无关,不管你用什么shell都是存在的.比如HOME,SHELL等这些变量,但shell自己的变量,不同的she ...

  8. linux 的set,env和export的区别

    原文地址:http://blog.csdn.net/zdwzzu2006/article/details/7678181 set命令显示当前shell的变量,包括当前用户的变量;env命令显示当前用户 ...

  9. #if DEBUG 和 if (env.IsDevelopment()) 的用法区别

    咨询区 webwake: 我发现预处理指令 #if DEBUG 和 Asp.NET Core环境变量名 都可以用于区分 debug/development 和 release/production 下 ...

最新文章

  1. Cocos2d-x3.1颗粒使用
  2. HAProxy实现负载均衡及高可用集群(corosync+pacemaker)
  3. 计算机大赛横幅标语有趣的,有趣的横幅标语
  4. 西部数码linux云服务器,linux云服务器选择哪个版本
  5. Linux下samba服务搭建
  6. android模拟gps定位软件,gps定位模拟器下载最新版
  7. 12个C语言必背实例
  8. 用命令关闭计算机,使用DOS命令关机的操作步骤
  9. 想自学单片机,各位有什么书和板子值得推荐的吗?
  10. C#身份证号码验证代码
  11. linux sftp连接报错:JSchException: Algorithm negotiation fail问题的解决方法
  12. 平安夜html5源码,平安夜
  13. 滴滴android wear,滴滴货运app下载_滴滴货运apk最新安卓版下载v5.4.0_3DM手游
  14. 网络基础——100道面试题,你能答对多少?
  15. C1认证学习十(Ipv6)
  16. python 获取list特定元素下标
  17. Oracle VM VirtualBox 新建虚拟电脑
  18. brew_install.rb 安装brew的文件
  19. 蛋蛋读UFS之二:UFS协议栈
  20. 药物临床试验数据分析(靶点|适应症|企业|登记信息)

热门文章

  1. 藏在1.85亿人体内的隐形致癌病毒,有人确诊即是晚期
  2. R语言使用magick包的image_animate函数和image_morph函数创建一个由n个图像组成的序列,逐渐将一个图像转换成另一个图像(sequence of image morph by)
  3. R语言可视化分面图、假设检验分组t检验、可视化单变量分组分面箱图(faceting boxplot)并添加p值(Make facet boxplot and add p-values)、添加抖动数据点
  4. R语言ggplot2可视化自定义图例(legend)方框(box):所有图例没有方框、每个图例分别在不同的方框中、多个图例放置在同一个方框中
  5. R语言构建文本分类模型并使用LIME进行模型解释实战:文本数据预处理、构建词袋模型、构建xgboost文本分类模型、基于文本训练数据以及模型构建LIME解释器解释多个测试语料的预测结果并可视化
  6. 混淆矩阵是什么?Python多分类的混淆矩阵计算及可视化(包含原始混淆矩阵及归一化的混淆矩阵):基于skelarn框架iris数据集
  7. R语言Logistic回归模型案例:分析吸烟、饮酒与食管癌的关系
  8. R语言基于glmnet构建分类模型并可视化特征系数(coefficient)以及L1正则化系数(lambda)实战
  9. 聚类效果评估、内部指标(Jaccard系数、FM指数、Rand指数)、外部指标(DB指数、Dunn指数)、轮廓系数(Silhouette Coefficient)
  10. 3d 自动生成物体_Adobe发布3D建模、AR内容生成应用Scantastic