Docker Ubuntu 16.04 容器中如何设置北京时间
【泛智能时代】
导读: Docker 容器很方便,能够轻量地启动停止各种容器。但我启动了一个 Ubuntu 16.04 的容器,发现里面的显示时间不对。
这个问题怎么解决:
先来看看问题。
启动一个容器,并用显示时间命令看看容器里的时间:
$ docker run -it ubuntu:16.04root@671e9ca48fdf:/# date Tue Aug 13 13:34:49 UTC 2019
此时,我的主机时间是:
$ dateTue Aug 13 21:37:26 HKT 2019
可以看出,两者相隔的时间是 8 小时,因此,推断出来,容器里的时区是经度 0 的时区(因为北京时间是东八区)。
此时需要怎么做才能让这个窗口里面能显示北京时间(东八区的时间)?
一个方法是用命令 tzselect. 但是这个命令在 ubuntu:16.04 的容器中依赖太多,并不一定有效。怎么快速的设置时区呢?
这里介绍一个比较方便的方法。先找到能正确显示时区的主机上的文件路径 /etc/localtime, 一般情况下,这个 /etc/localtime 是一个链接文件,我们可以通过运行 cat /etc/localtime > /tmp/localtime 来生成一个文件,然后把这个文件拷贝到容器中的位置 /etc/localtime 即可。
是不是很简单?
主机上完整的执行脚本:
$ cat /etc/localtime > /tmp/localtime$ docker cp /tmp/localtime 671e9ca48fdf:/tmp/localtime
再进容器中,执行如下命令:
root@671e9ca48fdf:/# rm /etc/localtimeroot@671e9ca48fdf:/# cp /tmp/localtime /etc/localtime && root@671e9ca48fdf:/# dateTue Aug 13 21:47:16 HKT 2019
执行完之后,再运行 date 查看时间:
这回世界正常了。
【泛智能时代】不来虚的,更多干货等你发现【泛智能时代】 jd_geek