当前情况
宿主机的时区要是CST,即东八区。
MySQL所在的容器是UTC
在MySQL内执行select now()显示的时间也是UTC。
- 通过docker cp修改容器时间
如下即可将容器的时间改为和宿主机同样的时区
sudo docker cp /etc/localtime 231458904a77:/etc/localtime
这个时候如果报错了
[root@VM-0-8-centos /]# sudo docker cp /etc/localtime mysql:/etc/localtime
Successfully copied 1.54kB to mysql:/usr/share/zoneinfo/UCT
Error response from daemon: invalid symlink "/usr/share/zoneinfo/UCT" -> "../usr/share/zoneinfo/Asia/Shanghai"
即使重启 容器 时间也 没有改变
更改命令
docker cp /usr/share/zoneinfo/Asia/Shanghai 70ec41893d66:/etc/localtime
此时MySQL所在的容器时间如下,已经是东八区
➜ ~ ✗ sudo docker exec -it 231458904a77 /bin/bash
root@231458904a77:/# date
Thu Jan 28 10:56:42 CST 2021
但是,MySQL服务的时间还不是东八区
- 重启MySQL容器
sudo docker restart 231458904a77
执行完命令之后查看,则可以发现宿主机、MySQL所在容器、MySQL服务三个时区都是一致的了
也可以在 创建容器的时候 增加参数
-e TZ=Asia/Shanghai