好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > docker中的環境變量使用與常見問題解決方案

docker中的環境變量使用與常見問題解決方案

熱門標簽:物超所值的400電話申請 營銷電銷機器人招商 百應電銷機器人靠譜嗎 菏澤crm外呼系統價格 遼寧電銷平臺外呼系統軟件 coreldraw地圖標注 申請400電話號碼多少錢 信陽銷售外呼系統招商 如何在各種地圖標注自己的地址

前言

docker可以為容器配置環境變量。配置的途徑有兩種:

  • 在制作鏡像時,通過ENV命令為鏡像增加環境變量。在容器啟動時使用該環境變量。
  • 在容器啟動時候,通過參數配置環境變量,如果與鏡像中有重復的環境變量,會覆蓋鏡像的環境變量。

使用docker exec {containerID} env即可查看容器中生效的環境變量。

[root@localhost ~]# docker exec 984 env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/java/default/bin
TERM=xterm
AUTHORIZED_KEYS=**None**
JAVA_HOME=/usr/java/default
HOME=/root
...

容器啟動的進程,也就是ENTRYPOINT+CMD中,可以通過相應的系統庫獲取容器的環境變量。

進入到容器中,查看進程的環境變量,可以通過/proc下進行查看。

cat /proc/{pid}/environ

因此,容器中的環境變量也可以通過在容器中查看1號進程的環境變量來獲取。可以通過執行cat /proc/1/environ |tr '\0' '\n'命令進行查看。

[root@localhost ~]# docker exec -it 984 cat /proc/1/environ |tr '\0' '\n'
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/java/default/bin
TERM=xterm
AUTHORIZED_KEYS=**None**
JAVA_HOME=/usr/java/default
HOME=/root
...

一般來說,從父進程產生出來的子進程都會默認繼承父進程的環境變量。因此容器中的各個進程的環境變量應該是大致相同的。當然,在一些特殊的情況下,環境變量也會被重置,導致產生一些誤解和問題。下面就對容器中一些常見的情況進行相關講解。

常見問題及解決

切換不同用戶后環境變量消失

在容器中,啟動后切換不同用戶,比如使用su - admin切換admin用戶后,發現配置的容器環境變量丟失了。

這是因為切換用戶會導致環境變量重置。因此要使用su -p admin這樣的方式,才可以繼承先前的環境變量。

我們可以通過help來看下su的相關參數描述。

[root@adworderp-03a38d62-4103555841-m81qk /]# su --help
Usage: su [OPTION]... [-] [USER [ARG]...]
Change the effective user id and group id to that of USER.

...
 -m, --preserve-environment do not reset HOME, SHELL, USER, LOGNAME
    environment variables
 -p    same as -m
...

容器中的亂碼問題

一些業務在遷移到容器中時,常常報告打印日志亂碼。一般的原因是locale沒有配置正確導致。

可以通過locale查看當前容器的語言環境。如果沒設置,一般會是POSIX。我們可以通過locale -a查看當前容器支持的語言環境,而后根據需要進行設置。

要想一勞永逸,最好的方式還是在容器啟動或者鏡像的環境變量中添加LANG={xxx},選擇合適的語言,從而避免因此導致的亂碼問題。

ssh的環境變量問題

容器中啟用sshd,可以方便連接和排障,以及進行一些日常的運維操作。

但是很多用戶進入到容器中卻發現,在docker啟動時候配置的環境變量通過env命令并不能夠正常顯示。

這個的主要原因還是ssh為用戶建立連接的時候會導致環境變量被重置。

這樣導致的最大問題就是通過ssh啟動的容器進程將無法獲取到容器啟動時候配置的環境變量。

了解了原理后,這個問題有個簡單的方法解決。就是可以通過將容器的環境變量重新設置到ssh連接后的session中。
具體的實現方式是,ssh連接后,會自動執行source /etc/profile。

那么我們其實只要在/etc/profile追加幾行代碼,從1號進程獲取容器本身的環境變量,然后循環將環境變量export一下即可。

以下是一個簡單的for循環實現。

for item in `cat /proc/1/environ |tr '\0' '\n'`
do
 export $item
done

當然,有更簡潔的命令,就是export $(cat /proc/1/environ |tr '\0' '\n' | xargs),可以實現同樣的效果。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。

標簽:江西 泰安 玉樹 江門 湖北 瀘州 內江 廈門

巨人網絡通訊聲明:本文標題《docker中的環境變量使用與常見問題解決方案》,本文關鍵詞  docker,中的,環境,變量,使用,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《docker中的環境變量使用與常見問題解決方案》相關的同類信息!
  • 本頁收集關于docker中的環境變量使用與常見問題解決方案的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 成人午夜毛片在线看| 霍水儿霍泽小说全文免费霍泽| 69堂爆乳无码影院在线观看| 旺夫记| 国产污视频在线播放| 内衣办公室动漫在线h| 亚洲精品一区二区二区的游戏情况| 日韩欧美不卡视频| 右玉县| 国产精品无码a∨精品影院| 性xxxxbbbb老年人| 免费在线观看亚洲| 两男一女一起做爰电影| 女人离婚一年能憋住不找男人吗 | 快穿攻略名配器叠加的小说1v3| 出差被夫の上司持久侵犯三浦步美| 成 年 人 视频app免费无病毒| 绫清竹的堕落h嗯啊好深啊| 91精品福利一区二区三区野战| 成人同人动漫免费观看| 被c到高潮疯狂喷水微博| 亚洲日本va在线观看| 啊轻点灬两个大ji巴太粗小说| gabrieiciark喝尿液| 美国黄色a级片| 91嫩草精品少妇91嫩草影视剧 | zljzljzljzljxljzljzlj亚洲| 九九热线精品视频首页| 色戒电影未删除在线完整版 | 四川BBBBBB搡BBB搡BBBB| 风流舞厅1980无删减版| 国产A级毛片久久久久久精品动图| 欧美侏儒老少配sex性hd| 蜜桃成熟时33d高清完整视频在线| 法国精品性hd| 亚洲成a人片在线观看无码亚洲 | 靠近我抓紧我| 99精品国产自在现线免费下载| 国精产品一二三区区污污aaal| 一级毛片成人午夜| 开小男生的苞h|