1. 进入容器并查看语言区域设置,默认配置不是zh_CN.UTF-8

[root@jorelSpace smbSer]# docker run -it --rm centos:7 bash
[root@7574cbea352f /]# locale
LANG=
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=

2. 查看现有语言库,没有中文语言库

[root@7574cbea352f /]# locale -a
C
POSIX
en_AG
en_AG.utf8
en_AU
8591
...
en_US.utf8
en_ZA
en_ZW
en_ZW.iso88591

3. 安装中文语言包

步骤:

  • 更新软件库
  • 安装中文语言包
  • 重新安装glibc共享库,敲黑板!!
# 敲黑板:斜杠( \ )后边不能有空格
[root@7574cbea352f /]# yum -y update && \
yum install -y kde-l10n-Chinese && \
yum -y reinstall glibc-common

4. 生成中文语言库并配置

# 使用命令生成中文语言库
[root@7574cbea352f /]# localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
# 导入中文支持环境变量
[root@7574cbea352f /]# export LANG=zh_CN.UTF-8
[root@7574cbea352f /]# export LC_ALL=zh_CN.UTF-8
# 时区改为东八区,提示覆写输入y并回车
[root@7574cbea352f /]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
cp: overwrite ‘/etc/localtime’? y

5. 查看默认语言

[root@7574cbea352f /]# 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

6. Dockerfile示例

之所以把命令用&& \连接在一行执行,是因为可以减少镜像层级。
文件很简单,就不细说明了。

FROM centos:7

RUN  yum clean all && \
    yum makecache && \
	yum -y -q update && \
	yum install -y -q kde-l10n-Chinese && \
	yum -y -q reinstall glibc-common && \
    localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 && \
    \cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    
ENV LANG=zh_CN.UTF-8 \
	LC_ALL=zh_CN.UTF-8