docker 配置时区

Base Image 使用的基本上都是 Docker 官方的,所以里面的时间设置大多是 Etc/UTC,也就是标准的 UTC 时间,所以要简单的调整一下,变成中国标准时间。

如果Container 没有创建的话,文件里可以加入配置
user-mysql:
image: mysql:5.6.23
ports:
- "2006:3306"
environment: TZ : "Asia/Shanghai" MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: test

‘TZ’ 就是设置时区

如果已经创建了 container 的话,可以直接接入到 container 里面,用命令行实现时区的更改:
首先通过下面的命令进入对应的 containerid:(docker ps 可以获得CONTAINER ID)

docker exec -ti containerid bash

然后在 container 里面执行如下的命令:
echo "Asia/Shanghai" > /etc/timezone
dpkg-reconfigure -f noninteractive tzdata
可以看到屏幕上有类似的输出:

Current default time zone: 'Asia/Shanghai' Local time is now: Sat May 14 18:34:13 CST 2016. Universal Time is now: Sat May 14 10:34:13 UTC 2016.

退出 exit
然后重启 sudo docker restart containerid

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

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

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

推荐阅读更多精彩内容