docker容器时间与宿主机不一致,docker容器和宿主机网段冲突

有什么好的办法解决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容器没有设置时间导致的,因此用户只需根据上面的介绍的方法进行设置即可。

电脑的软件卸载不了,电脑的软件卸载不了也打不开
上一篇
笔记本怎么设置宽带连接,笔记本怎么设置宽带连接方式
下一篇

相关推荐