zoukankan      html  css  js  c++  java
  • Docker变量的相关总结

    一、AVG与ENV

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

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


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

    1)Dockerfile里有如下两行

    ARG VAR_A=1
    ENV VAR_B ${VAR_A}


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

    $ docker exec ContainerID env
    VAR_B=1

    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-8
    JAVA_VERSION=8
    ......

    2、通过docker inspect方式查看

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

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

    $ cat /proc/1/environ

    四、其他

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

    相关资料:

  • 相关阅读:
    MySQL主从复制
    Mysql解压版安装配置
    MySQL 多行数据合并 GROUP_CONCAT
    Java集合框架
    Redis 入门知识点
    事务
    Spring AOP 知识点入门
    Tomcat热部署和热加载
    Java的Socket通信简单实例
    nginx和tomcat配置负载均衡和session同步
  • 原文地址:https://www.cnblogs.com/lemon-le/p/11845920.html
Copyright © 2011-2022 走看看