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