Docker/Linux配置中文環境

    我們平時所使用的Docker鏡像其實就可以看作是一個linux的環境,因此Docker的中文環境配置其實類似於Linux的中文環境配置。

    通過在網絡中的搜索,發現大家的方法無非是兩種,一種是通過yum -y install fonts-chinese直接安裝,一種是通過下載fonts-chinese-3.02-12.el5.noarch.rpm和fonts-ISO8859-2-75dpi-1.0-17.1.noarch.rpm安裝。我所使用的Docker是Ubuntu鏡像,裏面既沒有yum也沒有rpm(Ubuntu不建議使用yum進行安裝)。不過由於這兩種方案佔絕大多數,因此還是進行了嘗試。通過各種方法安裝了yum和rpm後,發現使用第一種方案安裝之後會導致glibc版本問題的產生,造成bash命令都無法使用,而對於第二種方法,在安裝rpm的時候發現缺少一些依賴,而安裝這些依賴還是需要yum,因此選擇查找別的解決方案,最後的解決方案如下:

    首先,在終端中輸入locale    

#locale
LANG="POSIX"
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
所有的全局變量都是系統默認值“POSIX”,因此是不支持中文的。而通過locale -a發現沒有可用語言。

    然後通過修改locale的local文件增加字符集,在終端中輸入

vi /var/lib/locales/supported.d/local
因爲這個Docker容器中無可用字符集,所以這個文件是不存在的,而在正常的linux中有可能存在並且有一些內容,在這個文件中增加字符集

zh_CN.UTF-8 UTF-8
en_US.UTF-8 UTF-8
zh_CN.GBK GBK
保存後在終端輸入

dpkg-reconfigure locales
對於LInux設備而言,重啓即可,而對於Docker,則需要通過Docker commit保存當前的狀態,再重新啓動Docker。

字符集安裝成功後,就需要設置系統環境變量,通過

export LC_ALL=zh_CN.UTF-8
export LANG=zh_CN.UTF-8
設置環境變量之後linux便能設置中文(注意等號前後不要有空格)。

locale也變成了

#locale
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=zh_CN.UTF-8

重啓Docker後,發現全局變量又變回了原來的值,但是每次啓動都修改一遍又不太方便,所以在開啓Docker的時候通過-e參數設置默認值

docker run -e 'LONG=zh_CN.UTF-8'
或者通過DockerFile重新創建鏡像,便可以實現Docker環境變量的持久化。










    

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