10年 Java程序员,硬核人生!勇往直前,永不退缩!

欢迎围观我的git:https://github.com/R1310328554/spring_security_learn 寻找志同道合的有志于研究技术的朋友,关注本人微信公众号: 觉醒的码农,或Q群 165874185

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

docker 环境变量 怎么修改?

 

1 exec 进入容器后修改。 

可以修改,但是 测试证明, 没有用, 重新进入容器 之前的修改又看不见了。 可能是 修改没有被保存。 

每次 有客户端连入容器呢, 容器可能要读取一下 .bash_rc 之类的文件... 

 

退出exec 之后, docker exec  umc-fileserver  env 也可以看到刚刚做的修改。但  通过 inspect 看不到修改。

而且 restart 容器 之后 修改丢失!

 

[root@localhost ~]# docker exec umc-fileserver env
PATH=/usr/local/openjdk-8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=localhost.localdomain
BOOT_CONFIG= --spring.profiles.active=prod --spring.cloud.nacos.config.server-addr=192.169.7.148:8848 --spring.cloud.nacos.config.ext-config[0].data-id=umc-fileserver-node1.properties
JAVA_OPTS=-Xmx2g -Xms2g -Xmn2g -Dfile.encoding=UTF-8 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs/dump.log
LANG=en_US.UTF-8
JAVA_HOME=/usr/local/openjdk-8
JAVA_VERSION=8u265
LANGUAGE=en_US:en
LC_ALL=en_US.UTF-8
TZ=Asia/Shanghai
HOME=/root

 

 

 

2  shell 变量?

 

 

3 修改容器中的  /etc/bash.bashrc

 

测试发现, 这个有效! 但是 docker exec  umc-fileserver  env 还是 原始run 的环境变量, 不过好像没关系。 重启容器之后, 还是 有效!

 

有效是有效, 但是!  发现 根本不起作用!  我去! 实际, 还是 读取

 

 

需要重启吗? 之后, 一般来说肯定需要重启。 为什么呢?

 

我猜, 重启的时候,容器会从镜像读取原始数据,从而覆盖已经创建的部分容器的内容。(但是我并没有验证, 待继续分析..)

 

————

试过很多方法,结果发现是只能修改 容器部分的设置,但是环境变量基本是不能修改的,只能删除老的,然后重新创建一个。

 

其实呢,删除老的,然后重新创建一个 也是非常简单方便的事情。 一般来说,无非就是怕丢数据,因此,只要我们在启动容器直接把卷挂载出来,那就没事。 因为删除容器并不会把主动挂在的 卷删除。

因此,我们只要使用相同的方式的 挂载卷路径,那么文件不会丢失。

 

如果非要想着去修改容器的环境比较,非常麻烦,而且重启之后又失效,非常糟心,低效而又不好玩!

 

总之,目前我只能放弃这个“docker 动态修改容器的环境变量” 想法了!

 

posted on 2021-11-21 20:41  CanntBelieve  阅读(6114)  评论(2编辑  收藏  举报