我们平时所使用的Docker镜像其实就可以看作是一个linux的环境,因此Docker的中文环境配置其实类似于Linux的中文环境配置。

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