如何将宿主机的时区文件挂载到docker 容器里面?

对于时区的设置,对于应用程序在显示时间方面,至关重要,可是如何容器的镜像中,没有时区文件,该怎么解决?

 

其实,也非常的简单。

 

1、安装tzdata的软件包

2、将宿主机的时区文件挂载到容器中

 

今天,我们重点说说,第2点,怎么实现?

 

实现的方法非常的容易,在启动docker容器的时候,挂载时区文件、设置时区环境变量即可,我们来看下

 

  • 默认的alpine镜像中,无时区设置,无时区安装文件,所以,默认的时区UTC
[root@nctest-snap-test-02 etc]# docker run -it --rm alpine:3.13 sh
/ # date
Thu Jul  7 02:04:57 UTC 2022
/ # ls -l /etc/localtime
ls: /etc/localtime: No such file or directory
/ # cd /usr/share/zoneinfo
sh: cd: can't cd to /usr/share/zoneinfo: No such file or directory
/ # 

 

  • 挂载时区文件,设置TZ变量后,设置了当前的时区CST
[root@nctest-snap-test-02 etc]# docker run -it --rm -e "TZ=Asia/Shanghai" -v /usr/share/zoneinfo:/usr/share/zoneinfo alpine:3.13 sh
/ # date
Thu Jul  7 10:06:20 CST 2022
/ # ls -l /etc/localtime
ls: /etc/localtime: No such file or directory
/ # 
/ # cd /usr/share/zoneinfo/
/usr/share/zoneinfo # ls
Africa        Asia          CET           Cuba          Egypt         GB            GMT-0         Hongkong      Israel        Libya         Mexico        PRC           Portugal      Turkey        Universal     iso3166.tab   right
America       Atlantic      CST6CDT       EET           Eire          GB-Eire       GMT0          Iceland       Jamaica       MET           NZ            PST8PDT       ROC           UCT           W-SU          leapseconds   tzdata.zi
Antarctica    Australia     Canada        EST           Etc           GMT           Greenwich     Indian        Japan         MST           NZ-CHAT       Pacific       ROK           US            WET           posix         zone.tab
Arctic        Brazil        Chile         EST5EDT       Europe        GMT+0         HST           Iran          Kwajalein     MST7MDT       Navajo        Poland        Singapore     UTC           Zulu          posixrules    zone1970.tab
/usr/share/zoneinfo # 

 

  • 有了时区安装文件后,通过TZ设置任何的已经包含的时区,就非常容易了。
[root@nctest-snap-test-02 etc]# docker run -it --rm -e "TZ=Indian/Antananarivo" -v /usr/share/zoneinfo:/usr/share/zoneinfo alpine:3.13 sh
/ # date
Thu Jul  7 05:01:08 EAT 2022
/ # exit

 

当然了,我们可以通过对alpine镜像改造,安装时区文件的,也是一种实现的手段,也会更加的便捷。

posted @ 2022-07-07 10:10  Zhai_David  阅读(649)  评论(0编辑  收藏  举报