我们在运行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.  在容器启动时,设置环境变量。

docker环境变量设置相关推荐

  1. docker添加新的环境变量_Docker容器环境变量设置与查看

    设置环境变量 在编写Dockerfile时, 我们可以通过ENV来为Docker容器设置相关的环境变量,设置的环境变量在Docker容器中可以通过环境变量来进行引用. Docker容器环境变量设置方法 ...

  2. ubuntu系统php环境变量设置,Ubuntu系统环境变量详解

    使用Ubuntu 进行开发绕不开的就是环境变量的配置,由于Linux系统严格的权限管理,造成Ubuntu系统有多个环境变量配置文件,如果不了解其调用顺序,很有可能遇到配置了环境变量,而没有其作用的问题 ...

  3. 1.2 JDK安装与环境变量设置

    我们会以Java语言来进行脚本编写,所以需要进行JDK安装以及必要的环境变量设置.本书会使用JDK 8的版本,而不会使用JDK 9(太新的有的软件不兼容). 可以直接取Oracle官网选择相应的JDK ...

  4. ubuntu18.04.4 环境变量设置 export path

    ubuntu18.04.4 环境变量设置 export path 1.动态库路径的设置 Linux下调用动态库和windows不一样.linux 可执行程序是靠配置文件去读取路径的,因此有些时候需要设 ...

  5. jar java classpath_win7中java编程工具安装 java环境变量设置

    win7中java编程工具安装 java环境变量设置 Question:编译是显示'javac'不是内部或外部命令,也不是可运行的程序或批处理文件 解决: 在[系统变量]里编辑java_home.cl ...

  6. java环境变量设置

    一,java环境变量设置 - 精简版 1.右键打开我的电脑->属性->高级->环境变量 2.新建系统变量JAVA_HOME和CLASSPATH 变量名(N):JAVA_HOME  变 ...

  7. Linux环境变量设置中配置文件分析(/etc/profile,~/.bashrc等)(转)

    说明:在研究中发现,对于不同版本的Linux系统有着不同的文件,但是总的入口是不变的/etc/profile,下面只是展示加载顺序的研究过程,所以会有些系统没有这个文件等问题. 一.配置文件与作用域: ...

  8. JDK1.6安装与环境变量设置详细图解

    JDK1.6安装图解与环境变量设置为初学者详细介绍了JDK从下载到安装,整个开发伊始的那些事究竟是如何呢?让我们开始吧. 一.JDK1.6安装图解之JDK1.6的下载 JDK现在最新版本是JDK1.6 ...

  9. Linux下环境变量设置

    1.在Windows 系统下,很多软件安装都需要配置环境变量,比如 安装 jdk ,如果不配置环境变量,在非软件安装的目录下运行javac 命令,将会报告找不到文件,类似的错误. 2.那么什么是环境变 ...

最新文章

  1. 5G NGC — 关键技术 — MEC 边缘云
  2. An internal error occurred during: Launching MVC on Tomcat 6.x.
  3. CVPR 2018 MCCT:《Multi-Cue Correlation Filters for Roubust Visual Tracking》论文笔记
  4. 十四、Java练习:一个猜数游戏
  5. android模糊检索_【android学习笔记】ormlite学习之模糊搜索like
  6. 单片机c语言随机数,单片机C语言如何产生随机数
  7. mysql 日志记录 archive_完美起航-Mysql日志管理、备份与恢复
  8. 北方网-ios预科班
  9. springboot中service层注入的是实现类,但Controller层接收的是接口
  10. std::map的使用
  11. 赛锐信息:SAP系统业务审计介绍
  12. eclipse.ini
  13. MASM32编程将TimeStamp/UTC转换为具体日期时间的几个有用函数代码
  14. oppo r17进入9008模式
  15. M56 智慧井盖的技术应用
  16. 一次服务端大面积接口响应时间骤增问题排查
  17. 字符流何用, 字节流呢
  18. 如何在Windows命令行中使用Unicode字符?
  19. Centos 7.2内核版本升级(无外网)
  20. 在Unity3D中使用精灵动画引擎制作动画的两种方法

热门文章

  1. 程序员:这10种糟糕的程序命名,你遇到过几个?
  2. Git、GitLib、GitHub和GitLab
  3. 【摸鱼系列】3万张4K壁纸还不够你换的吗?python还可以实现更多采集可能
  4. 【蓝桥OJ—C语言】高斯日记、马虎的算式、第39级台阶
  5. AGXNet: Anatomy-Guided Weakly-Supervised Abnormality Localization in Chest X-rays
  6. 使用nexus-3.10x以上版本构建maven私服仓库
  7. 销售人员提升销售业绩的方法有哪些?
  8. 西雅图生物科技公司裁员12%!
  9. 虚拟视点合成 | 3D-Warping
  10. 聊聊如何建立深度工作的模式