解决容器内时间问题

前两天申请了三台机器,领导说,你测试环境要这么多机器干嘛,我说搭集群三台起,他问一台机器多个节点不行吗,我说现在想测试一下性能,回头可以改成用容器启动多个节点,然后他说就一台,我说“好的”,于是,我的三脚猫docker技能不得不再次营业。但是在解决容器内时间问题时,老办法居然不行了?这可如何是好?

老办法

官方打的镜像,启动起来容器里面的时间往往都是UTC时间,和北京时间差了八个小时,以前我解决这个问题的时候,往往会将本地的时间/etc/localtime通过volumn挂载到容器内部去,就像这样:

1
docker ... -v /etc/localtime:/etc/localtime ...

或者在docker-compose.yml里是这样:

1
2
3
4
...
volumes:
- /etc/localtime:/etc/localtime
...

可是!这种屡试不爽的招数,这次居然失灵了!
在和谷歌讨论了这个问题之后找到了一个解决方案。

新办法

通过老办法解决看来是不行了,在经过试验后,通过添加TZ这个环境变量设置时区,居然就这么简单地解决了???
就像这样:

1
docker ... -e "TZ=Asia/Shanghai" ...

或者在docker-compose.yml里是这样:

1
2
3
4
...
environment:
- "TZ=Asia/Shanghai"
...

emmmmmm好吧,反正先把这两种方法都记录下来,以后都试试,总有一个能用的(#^.^#)

(๑•̀ㅂ•́)و✧

参考资料:

  1. Be Careful About TimeZone Configuration While Playing With Docker
  2. How to set the timezone for docker container
坚持原创!欢迎各位客官给我打赏买🍪小饼干吖!✿✿ヽ(°▽°)ノ✿