美文网首页
问题解决方案: 容器时间与宿主机时间不一致

问题解决方案: 容器时间与宿主机时间不一致

作者: 独奏乱序 | 来源:发表于2020-08-09 23:09 被阅读0次

    产生原因:

    遇到docker时间不一致,大多情况下是因为默认时区没有设置导致的。一般在宿主机上使用的是 CTS 时间,docker容器内部使用的是 UTC 时间,可以通过date命令查看系统时区:
    CTS: China Standard Time,UTC+8:00 中国沿海时间(北京时间)
    UTC: Universal Time Coordinated 世界协调时间
    两个时区之间相差8个小时。


    解决方法:

    方法一:共享主机的localtime

    创建容器的时候指定启动参数,挂载localtime文件到容器内 :

    docker run --name <name> -v /etc/localtime:/etc/localtime:ro ....
    

    方法二:复制主机的localtime

    如果本机时区正确直接:

    docker cp /etc/localtime 【容器ID或者NAME】:/etc/localtime
    

    如果本机时区不正确:

    docker cp /usr/share/zoneinfo/Asia/Shanghai 【容器ID或者NAME】:/etc/localtime
    

    方法三:创建自定义的dockerfile

    如果是你的镜像是自己Dockerfile编译的,那么在你的Dockerfile中添加一下内容:

    RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
    

    方法四:增加启动环境变量

    docker run 的时候增加环境变量 -e TZ=Asia/Shanghai(有时不好用)


    参考文献:

    [1] https://blog.csdn.net/catoop/article/details/89737861
    [2] https://www.jb51.net/article/99906.htm
    [3] https://blog.csdn.net/qq_27295403/article/details/82256017
    [4] https://www.jianshu.com/p/24e7507fd576

    相关文章

      网友评论

          本文标题:问题解决方案: 容器时间与宿主机时间不一致

          本文链接:https://www.haomeiwen.com/subject/augrdktx.html