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