解决docker容器不支持中文的问题

我们 pull 下来的大多镜像时不支持中文的, 网上也有好多文章介绍如何让 container 支持中文, 有的写的挺复杂的, 把运维都看晕了, 有的按照他写的执行过后发现还是不能正常显示中文, 或是又引发了其他问题… 这里给大家介绍一个简单的方法让 docker 容器支持中文

已经启动的容器

由于容器是根据镜像而来, 已经启动的容器或已经存在的镜像不支持配置永久生效(当然你也可以在容器内配置之后, 再出来保存容器的状态为一个新的镜像) 所以下面的配置操作, 只对当前容器的生存周期有效

1
2
3
> docker exec -it containerID /bin/bash
>> echo 'export LANG="en_US.UTF-8"' >> /etc/profile
>> source /etc/profile

配置镜像支持中文

只需要在 dockerfile 中加入如下一行配置即可

1
2
# 环境变量
ENV LANG="en_US.UTF-8"

有人可能会问为什么不是用zh_CN.UTF-8而是用en_US.UTF-8

这个问题很棒👍 我也不清楚, 但是我查阅了资料, 整理如下:

1
2
3
4
5
6
en_US.UTF-8:你说英语,你在美国,字符集是utf-8 
zh_CN.UTF-8:你说中文,你在中国,字符集是utf-8

如果你的LANG环境变量是en_US.UTF-8,那么系统的菜单、程序的工具栏语言、输入法默认语言就都是英文的

如果你的LANG环境变量是zh_CN.UTF-8,那么系统的菜单、程序的工具栏语言、输入法默认语言就都是中文的

在运维的实际应用中, 系统一般都是使用英文环境, 且支持中文字符的, 因为在自动化的过程中, 系统的回显是英文会避免很多不必要的问题