我们平时所使用的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环境变量的持久化。