有什么好的办法解决docker容器与宿主机时间不同步的问题
Docker解决容器时间与主机时间不一致的问题的相关资料,这里提供了三种方法,供大家参考,需要的朋友可以参考下
Docker容器时间与主机时间不一致
通过date命令查看时间
[root@localhost~]#date
2016年07月27日星期三22:42:44CST
查看容器时间
root@b43340ecf5ef:/#date
WedJul2714:43:31UTC2016
可以发现,他们相隔了8小时。
CST应该是指(ChinaShanghaiTime,东八区时间)
UTC应该是指(CoordinatedUniversalTime,标准时间)
所以,这2个时间实际上应该相差8个小时。(bluer:所以没有设置过的容器,一般跟宿主机时间相差8h)
所以,必须统一两者的时区。
共享主机的localtime(方法一)
创建容器的时候指定启动参数,挂载localtime文件到容器内,保证两者所采用的时区是一致的。
dockerrun--namename-v/etc/localtime:/etc/localtime:ro....
复制主机的localtime(方法二)
dockercp/etc/localtime:【容器ID或者NAME】/etc/localtime
在完成后,再通过date命令进行查看当前时间。
但是,在容器中运行的程序的时间不一定能更新过来,比如在容器运行的MySQL服务,在更新时间后,通过sql查看MySQL的时间
selectnow()fromdual;
可以发现,时间并没有更改过来。
这时候必须要重启mysql服务或者重启Docker容器,mysql才能读取到更改过后的时间。
创建自定义的dockerfile(方法三)
创建dockerfile文件,其实没有什么内容,就是自定义了该镜像的时间格式及时区。
FROMredis
FROMtomcat
ENVCATALINA_HOME/usr/local/tomcat
#设置时区
RUN/bin/cp/usr/share/zoneinfo/Asia/Shanghai/etc/localtime\
echo'Asia/Shanghai'/etc/timezone\
保存后,利用dockerbuild命令生成镜像使用即可。
Docker容器与宿主机时间同步解决方案
Youcannotimproveyourpast,butyoucanimproveyourfuture.Oncetimeiswasted,lifeiswasted.
你不能改变你的过去,但你可以让你的未来变得更好。一旦时间浪费了,生命就浪费了。
如果在启动Docker容器的过程中没有单独配置localtime,很可能造成Docker容器时间与主机时间不一致的情况,比如UTC和CST相差8小时,换句话来说就是容器时间与北京时间相差8个小时
可以通过date命令分别查看容器和宿主机系统时间
注:这种方式在容器中运行的程序的时间不一定能更新过来,比如在容器运行的mysql服务,在更新时间后,通过sql查看mysql的时间
可以看到,时间并没有更改过来,这时候必须要重启mysql服务或者重启docker容器,mysql才能读取到更改过后的时间
不知什么时候起,熬夜仿佛成了奋斗的标志。但仔细想想,能拉开人与人差距的往往不是晚睡,而是早起。
有位网友参加了一项“早起30天”的挑战。他是个普通上班族,以前熬夜加班后白天再继续工作,总觉得自己在被任务拖着走,忍不住打瞌睡。开始坚持早睡早起后,犯困成了偶尔的事,工作效率大幅提升。成功避开了地铁早高峰,他再也不用体会被拥挤人潮推着走的感觉。由于头脑清醒,他做事更有计划,在工作时还会不时冒出各种创意。
早起,看似是细微的改变,收获却不容小觑。生活还是同样的生活,忙碌还是同样的忙碌,但是选择早睡早起,你就可以抓住了生活的主动权。
如何解决Docker容器和宿主机时间同步问题
们通过在在宿主机和容器里分别执行date命令来看下实际的情况。
在宿主机执行date命令的结果:
进入到容器里,再执行date命令的结果:
dockerexec-it《containerid》/bin/sh
date
执行后的结果为:
从截图来看,我们发现相差了8个小时。那么如何解决这个问题呢?目前有两种思路供参考。
创建容器的时候指定启动参数,自动挂载localtime文件到容器内
dockerrun--name《name》-v/etc/localtime:/etc/localtime:ro...
把时区设置加入到Dockerfile中
#Ubuntu
RUNecho“Asia/shanghai”》/etc/timezone;
#CentOS
RUNcp/usr/share/zoneinfo/Asia/Shanghai/etc/localtime
以上就是Docker容器和宿主机时间不同步的解决办法,这个问题主要是由于Docker容器没有设置时间导致的,因此用户只需根据上面的介绍的方法进行设置即可。