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命令查詢到的爲準。
   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章