在 Docker 中配置时区(转)

因为项目中有个业务,需要取得当前时间,商品参加活动的情况。但是总查询不出结果,后来发现是mysql的时间查询不正确,原因是mysql的时间晚了8小时。因为mysql安装在docker中,所有最终的原因是docker的时区与当前时间不一致。以下是转载修改docker时区的方法

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

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

首先通过下面的命令进入对应的 containerid:(docker ps 可以获得CONTAINER ID)

1
# docker exec -ti containerid 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 运行一次时区设置了。

猜你喜欢

转载自sunbin.iteye.com/blog/2291319