自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Docker中的時(shí)區(qū)問題處理

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

[[277323]]

背景

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


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


時(shí)區(qū)是UTC

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


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

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

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

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


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

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

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


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


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

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

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

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


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


總結(jié)

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

責(zé)任編輯:華軒 來(lái)源: 今日頭條
相關(guān)推薦

2021-10-13 08:53:09

Docker Django 容器

2021-01-21 09:09:18

時(shí)區(qū)轉(zhuǎn)換程序

2024-04-29 08:58:44

2013-08-21 10:46:02

DatePicker時(shí)區(qū)

2013-04-28 10:53:44

iOS開發(fā)NSDate計(jì)算日期計(jì)算

2024-06-21 09:02:27

.NET開發(fā)C#

2022-07-01 13:17:13

Docker

2020-12-17 08:00:18

java8時(shí)間類時(shí)間戳

2016-11-24 09:22:20

Linux時(shí)區(qū)NTP服務(wù)器

2014-02-19 09:51:29

iOS開發(fā)時(shí)間處理

2022-05-18 09:02:28

Flink SQLSQL字符串

2011-08-01 10:05:36

服務(wù)器虛擬化存儲(chǔ)

2021-02-26 13:50:37

Java并發(fā)代碼

2015-05-15 09:37:24

iOS開發(fā)爭(zhēng)議

2018-08-30 15:48:43

ConsulSpring Clou開源

2016-03-23 11:03:40

2010-09-25 15:19:04

DHCP故障問題

2024-04-18 10:26:14

模塊Python

2024-03-26 09:40:53

Linux優(yōu)化

2009-07-24 16:42:46

iBatis框架做ba
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)