宿主機(jī)時間
[root@slave-1 ~]# date
Fri May 12 11:20:30 CST 2017
容器時間
[root@slave-1 ~]# docker exec -ti 87986863838b /bin/bash
root@87986863838b:/# date????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
Fri May 12 03:20:33 UTC 2017
發(fā)現(xiàn)兩者之間的時間相差了八個小時蚤假!
宿主機(jī)采用了CST時區(qū)文虏,CST應(yīng)該是指(China Shanghai Time耕姊,東八區(qū)時間)
容器采用了UTC時區(qū),UTC應(yīng)該是指(Coordinated Universal Time,標(biāo)準(zhǔn)時間)
統(tǒng)一兩者的時區(qū)有下面幾種方法
1)共享主機(jī)的localtime
創(chuàng)建容器的時候指定啟動參數(shù),掛載localtime文件到容器內(nèi),保證兩者所采用的時區(qū)是一致的忧换。
# docker run -ti -d --name my-nginx -v /etc/localtime:/etc/localtime:ro? docker.io/nginx? /bin/bash
2)復(fù)制主機(jī)的localtime
[root@slave-1 ~]# docker cp /etc/localtime 87986863838b:/etc/
然后再登陸容器,查看時間向拆,發(fā)現(xiàn)已經(jīng)跟宿主機(jī)時間同步了
[root@slave-1 ~]# docker exec -ti 87986863838b /bin/bash
root@87986863838b:/# date????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
Fri May 12 11:26:19 CST 2017
3)創(chuàng)建dockerfile文件的時候包雀,自定義該鏡像的時間格式及時區(qū)。在dockerfile文件里添加下面內(nèi)容:
......
FROM tomcat
ENV CATALINA_HOME?/usr/local/tomcat
.......
#設(shè)置時區(qū)
RUN?/bin/cp?/usr/share/zoneinfo/Asia/Shanghai?/etc/localtime?&&?echo?'Asia/Shanghai'?>/etc/timezone
......
保存后亲铡,利用docker build命令生成鏡像使用即可,使用dockerfile創(chuàng)建的鏡像的容器改變了容器的時區(qū),這樣不僅保證了容器時間與宿主機(jī)時間一致(假如宿主機(jī)也是CST),并且像上面使用tomcat作為父鏡像的話葡兑,JVM的時區(qū)也是CST,這樣tomcat的日志信息的時間也是和宿主機(jī)一致的奖蔓,像上面那兩種方式只是保證了宿主機(jī)時間與容器時間一致,JVM的時區(qū)并沒有改變讹堤,tomcat日志的打印時間依舊是UTC吆鹤。