亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

docker中時區問題的處理方法

發布時間:2020-08-31 09:47:59 來源:腳本之家 閱讀:148 作者:云平臺運維開發 欄目:服務器

背景

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

docker中時區問題的處理方法
標準鏡像

docker中時區問題的處理方法
時區是UTC

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

docker中時區問題的處理方法

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

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

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

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

docker中時區問題的處理方法

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

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

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

docker中時區問題的處理方法

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

docker中時區問題的處理方法

docker容器處理時區的方法

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

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

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

docker中時區問題的處理方法

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

docker中時區問題的處理方法

總結

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平邑县| 嘉荫县| 集安市| 涟源市| 乐陵市| 夏河县| 孝昌县| 秦皇岛市| 镇沅| 郧西县| 克什克腾旗| 额敏县| 秭归县| 江华| 五莲县| 汉阴县| 江孜县| 枣阳市| 清徐县| 堆龙德庆县| 邢台市| 乡宁县| 揭阳市| 防城港市| 盐亭县| 台前县| 南康市| 深水埗区| 庄河市| 海淀区| 盐源县| 吉水县| 社会| 随州市| 阿拉善右旗| 辽阳县| 拉孜县| 武宁县| 龙州县| 松原市| 象州县|