Docker:容器與主機時間不同步問題解決


在Docker容器運行后,可能會發現容器時間與宿主機時間不一致,一般會差8個小時。這樣會造成在容器中運行的web程序打出的日志時間與實際時間不一致,如果web程序中有定時任務也會造成影響等,需要對宿主機和容器進行時間同步。


#宿主機時間:
[root@localhost ~]# date
2017年 10月 26日 星期四 10:04:07 CST

#容器時間
[root@753f856bca45 /]# date
Thu Oct 26 02:07:16 UTC 2017

#宿主機和容器時間相查8個小時
#宿主機采用CST時區,CST是指China Shanghai Time,東八區時間
#容器采用UTC時區,UTC應該是指Coordinated Universal Time,標准時間
       統一兩者的時區有下面幾種方法
1、共享主機的localtime


#創建容器的時候指定啟動參數,掛載localtime文件到容器內,保證兩者所采用的時區是一致的。
docker run -it -d --name web -v /etc/localtime:/etc/localtime:ro centos:1.0 /bin/bash
2、復制主機的localtime

docker cp /etc/localtime 753f856bca45:/etc/
3、創建dockerfile文件的時,自定義該鏡像的時間格式及時區。在dockerfile文件里添加下面內容:
#設置時區
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
        保存后,利用docker build命令生成鏡像使用即可,使用dockerfile創建的鏡像的容器改變了容器的時區,這樣不僅保證了容器時間與宿主機時間一致(假如宿主機也是CST),並且像上面使用tomcat作為父鏡像的話,JVM的時區也是CST,這樣tomcat的日志信息的時間也是和宿主機一致的,像上面那兩種方式只是保證了宿主機時間與容器時間一致,JVM的時區並沒有改變,tomcat日志的打印時間依舊是UTC。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM