在 Docker 中配置时区

最近玩 Docker 玩儿的非常的嗨皮,并且把公司的生产环境全部变成 Docker 部署的啦。因为 Base Image 使用的基本上都是 Docker 官方的,所以里面的时间设置大多是 Etc/UTC,也就是标准的 UTC 时间,所以要简单的调整一下,变成中国标准时间。

如果已经创建了 container 的话,可以直接接入到 container 里面,用命令行实现时区的更改:

首先通过下面的命令进入对应的 container:

1
# docker exec -ti container bash

然后在 container 里面执行如下的命令:

1
2
# echo "Asia/Shanghai" > /etc/timezone
# dpkg-reconfigure -f noninteractive tzdata

可以看到屏幕上有类似的输出:

1
2
3
Current default time zone: 'Asia/Shanghai'
Local time is now: Thu Feb 5 10:55:04 CST 2015.
Universal Time is now: Thu Feb 5 02:55:04 UTC 2015.

我们可以看到,local time 已经变成了 CST,也就是 CST – China Standard Time,这样我们的时区修改就已经完成了,之所以要用 noninteractive 的方式,是为了方便我们整合到 Dockerfile 中使用,比如:

1
2
RUN echo "Asia/Shanghai" > /etc/timezone
RUN dpkg-reconfigure -f noninteractive tzdata

这样的话,我们可以把时区设置做到自己的 Image 中,就不需要每个 container 运行一次时区设置了。