docker 動態修改容器的環境變量

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 動態修改容器的環境變量” 想法了!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章