一、检查容器时区
1.使用以下命令检查所有容器时区
docker ps --format '{{.Names}}' | xargs -I {} sh -c 'echo -n "{}: " && docker exec {} date'
2.检查单个容器时区
docker docker exec -it <容器> /bin/bash # 进入docker容器
date # 查看容器时间
二、修改docker时区
1、方法1
修改已运行容器的时区
先要确认宿主机时间是否正确,可以使用date命令,如果时间错误,则先进行对时。
第一步:进入需要更改时区的容器
docker exec -it <容器> /bin/bash
第二步:将宿主机的时区链接到容器里
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
2、方法2
创建容器的时候指定启动参数,挂载localtime文件到容器内
在创建 Docker 容器时,加上 “-v /etc/localtime:/etc/localtime:ro” 参数,让容器使用宿主机的时间,容器时间与宿主 机时间同步。
比如创建一个 Tomcat 容器:
docker run -d -p 8080:8080 --name mytomcat -v /etc/localtime:/etc/localtime:ro tomcat
其中 “-v /etc/localtime:/etc/localtime:ro” 表示让容器使用宿主机的时间时区。
3、方法3
使用docker file 解决
env TimeZone=Asia/Shanghai
使用软连接,并且将时区配置覆盖/etc/timezone
ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone