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环境变量的持久化。










    

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