docker容器Centos7时间和中文支持问题

 

1、容器中时间与宿主机不一致:

       挂载宿主机 /etc/localtime  如添加run参数 -v /etc/localtime:/etc/localtime:ro

       同时确保 宿主机下文件/etc/localtime 是软连接到/usr/share/zoneinfo/Aisa/Shanghai  如果不是,删除/etc/localtime执行如下命令:

#ln -s /usr/share/zoneinfo/Aisa/Shanghai  /etc/localtime

2.容器中时间是对的,但是jre运行的java程序与宿主机时间不一致 [比如java打印的带时间日志]

    挂载宿主机 timezone  如添加run参数 -v /etc/timezone:/etc/timezone:ro

    容器中的jre需要获取当前的时区信息,也可以通过jvm的参数传入时区信息: -Duser.timezone=GMT+08

     如果宿主机没有/etc/timezone文件,则需要手动添加有效时区名称,如上海时区,使用如下命令:

#echo "Asia/shagnhai" > /etc/timezone

 

3.容器里中文显示为乱码问题

   在容器中无法显示中文,同时也影响相关程序的正常运行,比如向磁盘写入中文文件名(一般码农新手干的多)

   执行如下命令检查本地所有语言包支持情况:

$locale -a

   执行如下命令检查中文语言包支持情况:

$locale -a | grep CN

   如果中文检测出包含zh_CN.utf8等语言编码,则表示中文支持,如果系统只有C和POSIX和en_US.utf8则表示系统多语言支持弱

  Centos7下修改/etc/yum.conf文件

  将 override_install_langs=en_US注释掉(这一行前加#)
  然后再尝试操作系统联网,执行如下命令

#yum reinstall glibc-common

   后再执行locale -a | grep CN检查中文,可以确认中文语言已经支持,然后修改或者新建文件/etc/locale.conf内容为LANG="zh_CN.utf-8",然后执行命令

$source /etc/locale.conf

    或者直接执行命令

   

set LANG="zh_CN.utf-8"

   系统立刻支持中文,比如执行ls命令可以正常查看中文文件名称

    同时容器run命令参数中也可以添加"-e LANG=zh_CN.utf-8" ,明确指定系统启动时的语言编码。

   注意,有的linux操作系统中编码名称为zh_CN.utf-8,有的系统中编码名称为zh_CN.UTF-8,根据locale -a命令查询到的为准。
   

你可能感兴趣的:(软件配置,操作系统)