1. 程式人生 > >Docker容器的時區設定

Docker容器的時區設定

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

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

$ date
2018年10月29日 星期一 08時47分17秒 CST
$ docker run -it ubuntu /bin/bash
[email protected]:/# 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
WORKDIR /app
ADD . /app

大體來說就是,我們需要在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
[email protected]
:/app# date Mon Oct 29 09:05:44 CST 2018

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

以上就是本文的全部內容,如果您喜歡這篇文章,歡迎將它分享給朋友們。

感謝您的閱讀,祝您生活愉快!

作者:小美哥
2018-10-29