最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

docker中的環(huán)境變量使用與常見問題解決方案

 更新時間:2019年03月15日 08:35:04   作者:xinkun  
這篇文章主要給大家介紹了關(guān)于docker中環(huán)境變量使用與常見問題解決方案的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用docker具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

前言

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

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

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

[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
...

容器啟動的進(jìn)程,也就是ENTRYPOINT+CMD中,可以通過相應(yīng)的系統(tǒng)庫獲取容器的環(huán)境變量。

進(jìn)入到容器中,查看進(jìn)程的環(huán)境變量,可以通過/proc下進(jìn)行查看。

cat /proc/{pid}/environ

因此,容器中的環(huán)境變量也可以通過在容器中查看1號進(jìn)程的環(huán)境變量來獲取??梢酝ㄟ^執(zhí)行cat /proc/1/environ |tr '\0' '\n'命令進(jì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
...

一般來說,從父進(jìn)程產(chǎn)生出來的子進(jìn)程都會默認(rèn)繼承父進(jìn)程的環(huán)境變量。因此容器中的各個進(jìn)程的環(huán)境變量應(yīng)該是大致相同的。當(dāng)然,在一些特殊的情況下,環(huán)境變量也會被重置,導(dǎo)致產(chǎn)生一些誤解和問題。下面就對容器中一些常見的情況進(jìn)行相關(guān)講解。

常見問題及解決

切換不同用戶后環(huán)境變量消失

在容器中,啟動后切換不同用戶,比如使用su - admin切換admin用戶后,發(fā)現(xiàn)配置的容器環(huán)境變量丟失了。

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

我們可以通過help來看下su的相關(guān)參數(shù)描述。

[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
...

容器中的亂碼問題

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

可以通過locale查看當(dāng)前容器的語言環(huán)境。如果沒設(shè)置,一般會是POSIX。我們可以通過locale -a查看當(dāng)前容器支持的語言環(huán)境,而后根據(jù)需要進(jìn)行設(shè)置。

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

ssh的環(huán)境變量問題

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

但是很多用戶進(jìn)入到容器中卻發(fā)現(xiàn),在docker啟動時候配置的環(huán)境變量通過env命令并不能夠正常顯示。

這個的主要原因還是ssh為用戶建立連接的時候會導(dǎo)致環(huán)境變量被重置。

這樣導(dǎo)致的最大問題就是通過ssh啟動的容器進(jìn)程將無法獲取到容器啟動時候配置的環(huán)境變量。

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

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

以下是一個簡單的for循環(huán)實現(xiàn)。

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

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

總結(jié)

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

相關(guān)文章

  • 如何修改 docker 容器的啟動參數(shù)

    如何修改 docker 容器的啟動參數(shù)

    工作中我們經(jīng)常遇到docker容器運行一段時間后,因為各種原因需要調(diào)整啟動參數(shù)的情況,這篇文章主要介紹了如何修改 docker 容器的啟動參數(shù),需要的朋友可以參考下
    2023-09-09
  • docker中如何將jar包構(gòu)建成鏡像并執(zhí)行

    docker中如何將jar包構(gòu)建成鏡像并執(zhí)行

    這篇文章主要介紹了docker中如何將jar包構(gòu)建成鏡像并執(zhí)行問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • docker容器啟動不起來的若干問題解決

    docker容器啟動不起來的若干問題解決

    本文主要介紹了docker容器啟動不起來的若干問題解決,文中通過圖文示例介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-04-04
  • Docker中使用Redis配置文件的詳細(xì)指南

    Docker中使用Redis配置文件的詳細(xì)指南

    在現(xiàn)代軟件開發(fā)中,Redis 因其高性能和低延遲的特性,被廣泛用作數(shù)據(jù)結(jié)構(gòu)服務(wù)器和消息代理,Docker 作為一個輕量級的容器化平臺,使得部署和管理 Redis 變得更加簡單和高效,本文給大家介紹了Docker中使用Redis配置文件的詳細(xì)指南,需要的朋友可以參考下
    2024-11-11
  • Docker API 未授權(quán)訪問漏洞問題解析

    Docker API 未授權(quán)訪問漏洞問題解析

    這篇文章主要介紹了Docker API 未授權(quán)訪問漏洞問題解析,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • docker-compose 部署 Apollo 自定義環(huán)境的詳細(xì)教程

    docker-compose 部署 Apollo 自定義環(huán)境的詳細(xì)教程

    本篇文章給大家介紹docker-compose 部署 Apollo 自定義環(huán)境的詳細(xì)教程,而其中Config Service提供配置的讀取、推送等功能,服務(wù)對象是Apollo客戶端,對docker部署Apollo環(huán)境相關(guān)知識感興趣的朋友一起看看吧
    2021-06-06
  • Docker容器添加自定義MySQL配置文件

    Docker容器添加自定義MySQL配置文件

    本文介紹在Docker容器中通過綁定掛載為MySQL添加自定義配置文件,包括確定綁定掛載目錄、創(chuàng)建配置文件、添加配置項、重啟容器和驗證配置,具有一定的參考價值,感興趣的可以了解一下
    2024-11-11
  • Docker教程:使用容器(簡單示例)

    Docker教程:使用容器(簡單示例)

    今天小編就為大家分享一篇關(guān)于Docker教程:使用容器(簡單示例),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • docker將鏡像打包為.tar包實現(xiàn)方法

    docker將鏡像打包為.tar包實現(xiàn)方法

    使用tar包格式進(jìn)行壓縮,方便在不同的docker主機之間進(jìn)行遷移和備份,下面這篇文章主要給大家介紹了關(guān)于docker將鏡像打包為.tar包的實現(xiàn)方法,需要的朋友可以參考下
    2024-07-07
  • 使用Golang玩轉(zhuǎn)Docker API的實踐

    使用Golang玩轉(zhuǎn)Docker API的實踐

    這篇文章主要介紹了使用Golang玩轉(zhuǎn)Docker API的實踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04

最新評論

调兵山市| 武穴市| 梓潼县| 额尔古纳市| 鄂州市| 平顺县| 茂名市| 微山县| 和政县| 平谷区| 安平县| 松滋市| 英超| 新沂市| 广汉市| 方正县| 彝良县| 长春市| 柘荣县| 吴旗县| 金山区| 通海县| 青铜峡市| 潍坊市| 凤山县| 静海县| 永修县| 昌邑市| 伊通| 泊头市| 辛集市| 洪江市| 安阳县| 望江县| 盖州市| 温宿县| 繁峙县| 罗江县| 安平县| 辉南县| 清镇市|