docker中時區(qū)問題的處理方法-創(chuàng)新互聯(lián)

背景

成都創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計制作、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的興寧網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

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

標(biāo)準(zhǔn)鏡像

時區(qū)是UTC

查看/etc/localtime,發(fā)現(xiàn)默認(rèn)指向的是Etc/UTC時區(qū).而且TZ環(huán)境變量也沒有被設(shè)置.


linux中的時區(qū)問題到底是怎么處理的


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

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

其中和我們相關(guān)的部分如下.

核心意思如下: 在glibc中,TZ環(huán)境變量的值是一個文件的名字,這個文件的內(nèi)容描述了時區(qū)相關(guān)的信息.

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

按照這個思路,我們強制指定TZ環(huán)境變量為Asia/Shanghai,時區(qū)正確


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

docker容器處理時區(qū)的方法


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

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

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


其次,我們也可以在容器拉起的時候使用-e TZ=Asia/Shanghai進(jìn)行TZ環(huán)境變量設(shè)置,這個設(shè)置就是動態(tài)的,同一個鏡像我們可以在拉起的時候設(shè)置不同的值.


總結(jié)


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

當(dāng)前文章:docker中時區(qū)問題的處理方法-創(chuàng)新互聯(lián)
文章位置:http://muchs.cn/article44/ddjghe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、外貿(mào)建站、商城網(wǎng)站、云服務(wù)器、網(wǎng)站策劃用戶體驗

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名