docker环境变量设置

我们在运行docker容器应用程序时,需要使用特定的环境变量,并希望环境变量持久化生效,无非从dockerfile和容器入手,

一、dockerfile 添加环境变量

  (1) dockerfile ENV   设置环境变量,该方式直接将变量生成到镜像中

ENV   PATH=/usr/loca/mysql/bin:$PATH  LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH

 (2) dockerfile CMD/RUN / ENTRYPOINT

CMD   export PATH=/usr/local/mysql:$PATH
或
RUN   export PATH=/usr/local/mysql:$PATH
或
ENTRYPOINT export PATH=/usr/local/mysql:$PATH

 二、使用容器添加环境变量

 注意,使用容器添加环境变量,如果需要保存到镜像,需要使用docker commit 提交容器的读写层,变成只读层。

(1) 启动容器是指定环境变量

docker run -dti -e PATH=/usr/local/mysql/bin:$PATH --rm  镜像ID
或者
docker run -tid --env PATH=/usr/local/mysql/bin:$PATH --rm  镜像ID

多个变量,使用多个-e /  –env 标记

(2)进入容器内部,添加需改环境变量

docker exec -ti 容器ID/容器名  /bin/bash

可在如下文件内容添加变量

  • ~/.bashrc
  • ~/.profile
  • ~/.bash_profile
  • /etc/profile
  • /etc/environment
  • /etc/bash.bashrc

添加方法:在文件末尾添加类似:

export PATH=/usr/local/mysql/bin:$PATH

添加完成后,使文件生效, 这一步很重要

source   修改的文件

然后可调用  echo 查看

root@363aae75095b:/# echo $PATH
/usr/local/mysql/bin:/usr/local/cuda-9.0/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
root@363aae75095b:/# 

最后一步,提交容器为镜像

docker commit -a 作者 -m 提交日志  -t  容器名或ID 仓库名:镜像版本 

此步骤之后,环境变量就保存到镜像中,可启动镜像,生成容器,然后进入查看验证。

 

总结

        docker 容器环境变量修改,可从两个方面入手,dockerfile 和 容器。两种均有利弊。

       使用dockerfile,导致镜像的移植性降低,只要基于该dockerfile 创建的镜像,都保存该变量,二使用容器修改环境变量,容器一旦停止,变量清除。再次启动需要重新配置,如需要变量持久化,则需要保存容器为镜像。

      1、使用 dockerfile 创建环境变量时,建议最好使用ENV,但这种方式降低了镜像移植性。

      2、进入容器内创建变量,注意使用 source 具体文件  使变量生效。

      3、容器启动时,指定环境变量。

 建议使用 3.  在容器启动时,设置环境变量。

 

    原文作者:潇林
    原文地址: https://blog.csdn.net/a12345676abc/article/details/84651477
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞