由于在一个主机上使用多个容器,且容器自带的时间好像不太统一,导致我网页前端看到的时间总是差8小时。主要是容器内的时间和时区信息不统一。 原理:容器找时间的依据 读取linux系统时间步骤: 1.先找“TZ”变量,没有,到2, 2.读/etc/timezone,没有到3, 3.比较/etc/localtime文件与"/usr/share/zoneinfo目录下所有时区文件,如果有一致的,就为该时区,如果没有,到4, 4.默认为标准GMT 我的容器都没有TZ变量,所以就在2,3之间出现问题,我复制了localtime到容易,但是容器可能有默认的timezone,导致容器用了国际时。 解决办法比较容易,把2,3两个时间都覆盖一下。 如果使用Dockerfile RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone 如果使用docker启动命令行,请多带两条参数 -v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime \ -v /etc/timezone:/etc/timezone \ 因为我的容器有的没写Dockerfile,所以我统一屏蔽了Dockerfile里面的复制,只使用了docker的启动参数形式。 Last modification:September 9, 2021 © Allow specification reprint Support Appreciate the author AliPayWeChat Like 送杯咖啡,做个交流,谢谢!