Docker容器的時區設定

2021-08-30 08:18:26 字數 1357 閱讀 6878

docker作為一款優秀的開源容器管理工具,能夠幫助開發者一鍵式地在各個平台上執行自己的應用而無需考慮環境相容問題,已經成為目前主流的應用部署方案。

在使用docker容器時,可能碰到的乙個問題是時區的設定,因為docker容器內預設的時區是utc,這一點可以通過date命令來驗證。分別在宿主機和docker容器內執行date命令,觀察兩者的輸出是否相同

$ date

2023年10月29日 星期一 08時47分17秒 cst

$ docker run -it ubuntu /bin/bash

root@367851bfa10f:/# date

mon oct 29 00:48:09 utc 2018

可以看到,宿主機使用的是utc+8時間,而docker容器內使用的是utc時間。大多數應用開發者通常希望使用utc+8時間,因此我們需要在docker中重新設定時區。以ubuntu映象為例,我們可以通過如下的dockerfile來完成時區的設定

from ubuntu

run apt-get update

run export debian_frontend=noninteractive

run apt-get install -y tzdata=2018d-1

run ln -fs /usr/share/zoneinfo/asia/shanghai /etc/localtime

run dpkg-reconfigure -f noninteractive tzdata

大體來說就是,我們需要在ubuntu映象中安裝tzdate軟體包,然後進行軟鏈結,再重新執行時區的設定。值得注意的是,在設定時區時只有asia/shanghai的選項而沒有asia/beijing的選項,所以這裡不要想當然地寫錯了。我們可以通過docker build命令生成對應的映象,執行該映象以觀察效果。新建乙個資料夾,將這個dockerfile移到該資料夾下,然後執行以下命令

$ docker build -t timezone:v1 .

...successfully built 0262dcc4daa5

successfully tagged timezone:v1

$ docker run -it timezone:v1 /bin/bash

mon oct 29 09:05:44 cst 2018

可以看到,docker映象中的時區修改為了utc+8時間,大功告成!

2018-10-29

docker時區設定

前幾天用docker部署mysql,在web服務將資料寫入mysql時,發現時間相差了8個小時,隨後在網上查詢解決辦法。若用docker run 命令來執行docker的話,可以直接通過 v,將宿主機的時間與本地時間繫結到容器中,這樣時間就會跟宿主機一樣,例子 docker run v etc ti...

docker容器時區問題

軟體開發經常遇到時區問題,國際化應用要處理的時區更為複雜一些,本文講述docker容器時區設定。當服務容器返回的時間都是少8小時,說明就是容器的時區設定出現問題。一般解決此類問題要麼設定一下容器的時區,要麼就是讓容器繼承宿主主機的時區,顯然繼承宿主主機的時區更好 可能說的有些絕對了 我們可以通過調整...

docker容器改變時區

預設情況下的docker容器啟動之後,系統時間是utc時間,這導致和我們的北京時間相差8小時,會引出很多問題。有一些容器是和專案一起構建的,我們可以在構建的時候,將系統時區修改為asia shanghai。如下所示,我們在定義dockerfile的時候,可以直接加上這段指令 run ln sf us...