婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > docker中時區問題的處理方法

docker中時區問題的處理方法

熱門標簽:新邵電銷機器人企業 蘭州ai電銷機器人招商 高德地圖標注論壇 北海市地圖標注app 江西外呼系統 新科美甲店地圖標注 湖北ai智能電銷機器人 外呼系統打哪顯哪 AI電銷機器人 源碼

背景

這兩天在打docker的時候,發現自己的容器啟動之后,里面date -R的輸出時區是UTC,總是和北京時間差了8個小時.


標準鏡像


時區是UTC

查看/etc/localtime,發現默認指向的是Etc/UTC時區.而且TZ環境變量也沒有被設置.


linux中的時區問題到底是怎么處理的

實際上,我們所有關于時區處理的問題都是glibc中處理時區的問題. 這個問題最權威的文檔就是glibc的官方文檔,里面關于TZ環境變量的描述介紹了時區問題的處理.

https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html#TZ-Variable

其中和我們相關的部分如下.

核心意思如下: 在glibc中,TZ環境變量的值是一個文件的名字,這個文件的內容描述了時區相關的信息.

如果TZ這個環境變量沒有設置,那么系統會選擇一個默認值,在glibc中,其默認值為/etc/localtime. 如果TZ環境變量有值,并且這個值是以/開頭的,那么是一個絕對路徑的文件名,否則文件名為/usr/share/zoneinfo/$TZ. /usr/share/zoneinfo目錄下面有世界各地的本地時間信息,比如Asia/Shanghai.一般這個目錄下面的文件是被tzdata這個包安裝的.

按照這個思路,我們強制指定TZ環境變量為Asia/Shanghai,時區正確


強制修改/etc/localtime文件,時區也正確.

docker容器處理時區的方法

根據上面的描述,在docker容器中設置時區其實有兩個主要的方法. 一個是直接進行TZ環境變量設置,另一個是不設置TZ環境變量,直接修改/etc/localtime的內容(通過軟鏈接或者文件直接復制都可以)

這里以設置TZ環境變量為例(我自己比較喜歡這樣做,感覺比修改/etc/localtime更方便).

首先,我們可以在Dockerfile里面添加ENV TZ=Asia/Shanghai,這樣docker build出來的鏡像默認TZ環境變量就是我們要的值了.


其次,我們也可以在容器拉起的時候使用-e TZ=Asia/Shanghai進行TZ環境變量設置,這個設置就是動態的,同一個鏡像我們可以在拉起的時候設置不同的值.


總結

docker中的時區處理實際上就是glibc中的時區處理,了解了glibc中對事情的處理方法,核心是TZ環境變量和/etc/localtime文件,docker中的時期問題處理就簡單了.

標簽:黔東 黃石 南陽 池州 大理 自貢 阿克蘇 海南

巨人網絡通訊聲明:本文標題《docker中時區問題的處理方法》,本文關鍵詞  docker,中,時區,問,題的,處理,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《docker中時區問題的處理方法》相關的同類信息!
  • 本頁收集關于docker中時區問題的處理方法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 柳江县| 柳河县| 凯里市| 休宁县| 东乡族自治县| 甘肃省| 北流市| 顺昌县| 马边| 镇宁| 上林县| 蒙自县| 济阳县| 汝南县| 定边县| 阿荣旗| 正安县| 巩义市| 卫辉市| 革吉县| 绥棱县| 芦山县| 皮山县| 乌拉特中旗| 沙田区| 成武县| 江北区| 贵港市| 精河县| 卫辉市| 太仓市| 历史| 南开区| 岚皋县| 雷州市| 云南省| 宿松县| 洞头县| 砚山县| 上林县| 广河县|