Docker 容器内部时间比宿主机时间晚 8 小时,解决方法如下。

第一种方法

在创建容器时,通过 -v 参数加入时间挂载,使用宿主机时间:

docker run -d --name myphp -v /etc/localtime:/etc/localtime:ro -p 9000:9000 yangrz/php-fpm

第二种方法

如果不想重新创建容器,则在进入容器后替换默认时区文件,也可以解决。

先进入容器:

docker exec -it myphp /bin/bash

然后在容器中执行命令: 

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

第三种方法

执行 docker run 或 docker exec 的时候加入环境变量 -e TZ=Asia/Shanghai

# 执行 docker run 加入环境变量
docker run -d --name myphp -e TZ=Asia/Shanghai -p 9000:9000 yangrz/php-fpm

# 或者 docker exec 加入环境变量
docker exec -it -e TZ=Asia/Shanghai myphp bash