如何检查Docker容器时区是否与宿主机一致?
1、进入宿主机, 执行以下命令:
# 查看宿主机时间
[root@localhost ~]# date
2018年 06月 27日 星期三 22:42:44 CST
2、进入到容器中,执行以下命令
# 查看容器时间
root@lksjoid909090:/#date
Wed Jul 27 14:43:31 UTC 2018
CST应该是指(China Shanghai Time,东八区时间)
UTC应该是指(Coordinated Universal Time,标准时间)
可以发现,他们相隔了8小时, 宿主机与Docker容器时区不一致。
解决方案:
1、【镜像未生产前】基础镜像 在 Dockerfile 中设置时区:
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
2、【镜像生成后 && 容器未创建】 创建并启动容器时:
# 共享主机时间
docker run --name <name> -v /etc/localtime:/etc/localtime:ro ...
3、【镜像生成后 && 容器启动】 容器外,宿主机中修改:
docker cp /etc/localtime [容器ID或者NAME]:/etc/localtime
4、【镜像生成后 && 容器启动】 容器中
apk add tzdata
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime echo "Asia/Shanghai" > /etc/timezone