背景
我們的專案中有一塊日誌收集的功能,主要來收集容器化之後的一些例項的日誌,專案在執行之後發現收集到的日誌時間過濾有問題,並且中文顯示亂碼。
中文亂碼問題分析
因為亂碼問題涉及的點一般會比較多,遇到這種問題要從根源去分析是哪個環節導致的,有的是系統不支援中文,有的是因為資料庫編碼問題,有的是**中編碼問題。
我們的場景是從pod中獲取日誌,然後經過**解析,然後寫入到資料庫,以上提到的三個方面都涉及了。根據這個場景,先從根源入手,通過命令去檢視pod的日誌輸出,發現pod中的日誌輸出就是亂碼的,於是很快問題發現。因為映象是我們自己製作的,所以直接通過修改dockerfile檔案來解決,詳細如下,親測有效:
run yum -y install kde-l10n-chinese #安裝中文支援
run localedef -c -f utf-8 -i zh_cn zh_cn.utf8 #配置顯示中文
env lc_all zh_cn.utf8 #設定環境變數
env lang zh_cn.utf-8 #設定環境變數
看到網上有說需要同時安裝 glibc-common,也即
run yum -y install kde-l10n-chinese && yum -y reinstall glibc-common #安裝中文支援
多數時候安裝 glibc-common會返回錯誤碼,導致docker build失敗,這時候其實多數不用進行此包的安裝
時區問題
時區的問題定位要簡單很多,一般**注意在**中注意使用本地時區的轉化就好,各種開發語言基本都有對應的時區轉化方法。
如果在映象中進行轉化dockerfile中增加以下命令即可:
#定義時區引數
env tz=asia/shanghai
#設定時區
run ln -snf /usr/share/zoneinfo/$tz /etc/localtime &&
echo
'$tz'
> /etc/timezone
使用Dockerfile構建nginx映象
dockerfile的指令 from 指定基礎映象 from是必備的指令,並且必須為第一條指令 run 用來執行命令列命令。其基本格式 shell格式 run 命令 輸入在bash環境中的命令即可,乙個dockerfile允許使用run不得超過127層,所以,使用一次run,使用 換行,使用 執行下...
Dockerfile編譯安裝nginx映象
root localhost mkdir nginx root localhost cd nginx root localhost nginx touch dockerfile root localhost nginx vim dockerfile from daocloud.io library ...
Dockerfile構建映象,映象入倉庫,映象啟動
dockerfile是由一系列命令和引數構成的指令碼,這些命令應用於基礎映象並最終建立乙個新的映象。它們簡化了從頭到尾的流程並極大的簡化了部署工作。dockerfile從from命令開始,緊接著跟隨者各種方法,命令和引數。其產出為乙個新的可以用於建立容器的映象。dockerfile示例 form u...