Docker 解決容器時間與主機時間不一致的問題三種解決方案

這篇文章主要介紹了Docker 解決容器時間與主機時間不一致的問題的相關資料,這裏提供了三種方法,供你們參考,須要的朋友能夠參考下mysql

Docker容器時間與主機時間不一致
經過date命令查看時間
查看主機時間
[root@localhost ~]# date
2016年 07月 27日 星期三 22:42:44 CST
查看容器時間
root@b43340ecf5ef:/#date                                                                                                                          
Wed Jul 27 14:43:31 UTC 2016
能夠發現,他們相隔了8小時。
CST應該是指(China Shanghai Time,東八區時間) 
UTC應該是指(Coordinated Universal Time,標準時間) 
因此,這2個時間實際上應該相差8個小時。(bluer: 因此沒有設置過的容器, 通常跟宿主機時間相差8h)
因此,必須統一二者的時區。
共享主機的localtime  (方法一)
建立容器的時候指定啓動參數,掛載localtime文件到容器內  ,保證二者所採用的時區是一致的。redis

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

複製主機的localtime  (方法二)sql

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

在完成後,再經過date命令進行查看當前時間。 
可是,在容器中運行的程序的時間不必定能更新過來,好比在容器運行的MySQL服務,在更新時間後,經過sql查看MySQL的時間docker

select now() from dual;

能夠發現,時間並無更改過來。 
這時候必需要重啓mysql服務或者重啓Docker容器,mysql才能讀取到更改事後的時間。
建立自定義的dockerfile  (方法三)
建立dockerfile文件,其實沒有什麼內容,就是自定義了該鏡像的時間格式及時區。tomcat

FROM redis
FROM tomcat
ENV CATALINA_HOME /usr/local/tomcat

 
#設置時區
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo 'Asia/Shanghai' >/etc/timezone \
保存後,利用docker build命令生成鏡像使用便可。ui

相關文章
相關標籤/搜索