本文共 1735 字,大约阅读时间需要 5 分钟。
Dockerfile是定义容器镜像的文件,而ENV命令用于在镜像中定义环境变量。环境变量在容器运行时非常有用,可以配置应用程序、设置路径或自定义信息。在Dockerfile中,ENV命令的作用是为镜像中的容器提供必要的环境配置。
ENV key value
ENV命令用于定义镜像的环境变量,格式为键值对。键是环境变量的名称,值是变量的值。定义的环境变量可以在容器运行时通过env命令查看。
ENV PATH /usr/local/bin:$PATHENV LANG C.UTF-8ENV TERM xtermENV PYTHON_VERSION 3.5.3ENV name1=ping name2=on_ipCMD $name1 $name2
在上述示例中:
ENV PATH /usr/local/bin:$PATH - 定义了PATH环境变量,添加了/usr/local/bin到路径中。ENV LANG C.UTF-8 - 设置容器的默认语言为UTF-8。ENV TERM xterm - 设置容器的终端类型为xterm。ENV PYTHON_VERSION 3.5.3 - 设置Python的版本。ENV name1=ping name2=on_ip - 定义了两个环境变量。CMD $name1 $name2 - 启动容器时执行ping和on_ip命令。由于镜像的层次文件系统,ENV命令的定义会按照从下往上依次生效。也就是说,镜像的最底层定义的环境变量会被上层镜像覆盖。
ENV命令支持引用前面定义的环境变量。例如:
ENV abc=helloENV abc=bye def=$abcENV ghi=$abc
定义的结果中:
def=helloghi=bye这里的$abc表示引用前面定义的abc环境变量的值。
FROM busyboxENV box /helloENV a1 ${box}_a1ENV a2 $box_a1ENV a3 $boxENV a4 ${box}ENV a5 ${a1:-world}ENV a6 ${a0:-world}ENV a7 ${a1:+world}ENV a8 ${a0:+world}ENV a9 \$boxENV a10 \${box} docker build -t vker/df:0.1 .
docker run -it vker/df:0.1 /env
运行结果显示:
HOSTNAME=da1714f4cec7SHLVL=1HOME=/rootTERM=xterma1=/hello_a1a2=worlda3=/helloa4=/helloa5=/hello_a1a6=worlda7=worlda8=worlda9=/helloa10=/helloFROM busyboxENV box /helloENV a1 ${box}_a1ENV a2 $box_a1ENV a3 $boxENV a4 ${box}ENV a5 ${a1:-world}ENV a6 ${a0:-world}ENV a7 ${a1:+world}ENV a8 ${a0:+world}ENV a9 \$boxENV a10 \${box} docker build -t vker/df:0.2 .
docker run -it vker/df:0.2 /env
运行结果显示:
HOSTNAME=2fc25e990f12SHLVL=1HOME=/rootTERM=xterma1=/hello_a1a2=worlda3=/helloa4=/helloa5=/hello_a1a6=worlda7=worlda8=worlda9=/helloa10=/hello转载地址:http://wjej.baihongyu.com/