Docker容器時(shí)間與主機(jī)時(shí)間不一致
通過date命令查看時(shí)間
查看主機(jī)時(shí)間
[root@localhost ~]# date2016年 07月 27日 星期三 22:42:44 CST
查看容器時(shí)間
root@b43340ecf5ef:/#date Wed Jul 27 14:43:31 UTC 2016
可以發(fā)現(xiàn),他們相隔了8小時(shí)。
CST應(yīng)該是指(China Shanghai Time,東八區(qū)時(shí)間)
UTC應(yīng)該是指(Coordinated Universal Time,標(biāo)準(zhǔn)時(shí)間)
所以,這2個(gè)時(shí)間實(shí)際上應(yīng)該相差8個(gè)小時(shí)。(bluer: 所以沒有設(shè)置過的容器, 一般跟宿主機(jī)時(shí)間相差8h)
所以,必須統(tǒng)一兩者的時(shí)區(qū)。
共享主機(jī)的localtime (方法一)
創(chuàng)建容器的時(shí)候指定啟動(dòng)參數(shù),掛載localtime文件到容器內(nèi) ,保證兩者所采用的時(shí)區(qū)是一致的。
docker run --name <name> -v /etc/localtime:/etc/localtime:ro ....
復(fù)制主機(jī)的localtime (方法二)
docker cp /etc/localtime:【容器ID或者NAME】/etc/localtime
在完成后,再通過date命令進(jìn)行查看當(dāng)前時(shí)間。
但是,在容器中運(yùn)行的程序的時(shí)間不一定能更新過來,比如在容器運(yùn)行的MySQL服務(wù),在更新時(shí)間后,通過sql查看MySQL的時(shí)間
select now() from dual;
可以發(fā)現(xiàn),時(shí)間并沒有更改過來。
這時(shí)候必須要重啟mysql服務(wù)或者重啟Docker容器,mysql才能讀取到更改過后的時(shí)間。
創(chuàng)建自定義的dockerfile (方法三)
創(chuàng)建dockerfile文件,其實(shí)沒有什么內(nèi)容,就是自定義了該鏡像的時(shí)間格式及時(shí)區(qū)。
FROM redisFROM tomcatENV CATALINA_HOME /usr/local/tomcat#設(shè)置時(shí)區(qū)RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime / && echo 'Asia/Shanghai' >/etc/timezone /
保存后,利用docker build命令生成鏡像使用即可。
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
|
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注