Docker内时区查询和修改方法
利用【docker exec -it 容器ID /bin/bash】命令进入Docker容器内,
执行【date】命令查看Docker容器的时间发现与宿主机有误差时,修改时间和时区。
方法一:在【宿主机】中执行命令,【docker cp /etc/localtime 容器ID:/etc/localtime】,重启Docker容器。
方法二:在【宿主机】中执行命令,【docker cp /usr/share/zoneinfo/Asia/Shanghai 容器ID:/etc/localtime】,重启Docker容器。
方法三:在【容器】中执行命令,【ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime】,重启Docker容器。
创建容器时,直接用宿主机器上的时区默认覆盖容器内的时区配置文件,也就是跟宿主机器同样的时区配置
docker run id -v /etc/localtime:/etc/localtime:ro 镜像名
但是发现通过java中new Date()获取到的仍然是容器默认的时区,因为java是通过获取timezone来设置时间的,所以容器也需要设置时区。
/* 这里配置的环境变量 Asia/Shanghai就是我所需要的时区 */
# docker run -e TZ="Asia/Shanghai" -v /etc/localtime:/etc/localtime:ro 镜像名