一、AVG与ENV

1、在Dockerfile中,使用ARG与ENV的区别

ARG:ARG定义的变量用于构建Docker镜像,在通过build把Dockerfile构建成镜像后,ARG定义的变量便不在起作用;    
ENV:ENV定义的变量用于容器的环境变量,在Dockerfile里定义后,在容器的运行时是可以使用这个变量的

上面可能读起来比较绕,看下这个实例就明白了:

1)Dockerfile里有如下两行

ARG VAR_A=
ENV VAR_B ${VAR_A}

2)通过构建镜像并启动容器后,查看环境变量如下

$ docker exec ContainerID env
VAR_B=

3)从实例可看出,ARG定义的变量在Dockerfile中使用,构建完镜像后,就下岗;而ENV定义的变量会带入容器的环境变量。

可以用一张图来表示ARG与ENV的作用域:

2、通常可以把ARG与ENV结合使用

ARG buildtime_variable=default_value
ENV env_var_name=$buildtime_variable

使用这种方式可以解决Dockerfile硬编码的问题,比如在微服务下很多服务的情况下,构建一个镜像修改一次Dockerfile,而使用这种方式Dockerfile是不变的,只需要在docker build的时候加上参数值就可以。

二、传递环境变量的方法

1)Dockerfile文件里通过ENV指定

2)docker [option] -e VAR_NAME=VALUE指定,如果build的Dockerfile文件里有,将会覆盖

3)docker service update --env-add VAR_NAME=VALUE 添加

三、查看环境变量的方法

1、通过docker exec命令查看

$ docker exec ContainerID env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=lile
LANG=en_US.UTF-
JAVA_VERSION=
......

2、通过docker inspect方式查看

docker inspect --format='{{.Config.Env}}' ContainerID

3、进入容器通过/proc/PID/environ的方式

$ cat /proc//environ

四、其他

通过docker inspect可用通过--format指定获取值,可用不用对返回的JSON通过代码做分析;如:获取机器的IP
docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ContainerID

相关资料:

最新文章

  1. 总结个关于MySQL数据库的问题
  2. Linux2.6内核协议栈系列--TCP协议2.接收
  3. mongoDB学习记录---PHP扩展的find返回值
  4. 【转】从 ArcGIS for Desktop 发布地图服务
  5. java中在linux下利用jstack检测死锁
  6. ORACLE临时表总结[转]
  7. db2中修改表字段的长度,查看表字段长度,以及查看表字段已存放值大小
  8. 基于visual Studio2013解决算法导论之030二叉查找树
  9. php文件的管理
  10. Android系统拍照之后回显并且获取文件路径
  11. Ubuntu配置Nginx虚拟主机和支持ThinkPHP
  12. Python开发之---PyCharm初体验
  13. k短路模板(洛谷P2483 [SDOI2010]魔法猪学院)(k短路,最短路,左偏树,priority_queue)
  14. jquery 在线视频
  15. Java 实现 HDFS 文件基本操作
  16. laravel中artisan的用法
  17. python3-知识扩展扫盲易忘-zip的用法
  18. LeetCode 搜索二维矩阵 II
  19. 标准C库函数
  20. error LNK2001: 无法解析的外部符号 _H5T_NATIVE_DOUBLE_g

热门文章

  1. [插件化开发] 1. 初识OSGI
  2. PHP中sha1()函数和md5()函数的绕过
  3. VBS定时关闭软件
  4. CS231n:Python Numpy教程
  5. Vue-cli父子组件之间传参
  6. std::lock_guard 与 std::unique_lock
  7. 元素定位之css选择器(2)
  8. java web项目下的lib和build path 中jar包问题解惑
  9. MyBatis 概念
  10. 像使用SQL一样对List对象集合进行排序