容器时间和主机时间不同步

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/TM6zNf87MDG7Bo/article/details/79256633
序言

    

    时间,总是宝贵的,但是,可能你生活在超前的八小时,我生活在落后的八小时,时间不统一,从而有了时间之间的差异。


640?wx_fmt=png&wxfrom=5&wx_lazy=1

    UTC和CST时间相差8个小时,宿主机上的时间是CST时间,而容器上的时间一般都是UTC时间,从而总是需要重新编译镜像来达到时间相同的目的。

    

    你生活在什么时间,生活在过去?还是生活在现在?梦中梦。。。。


    慢同步。。。慢慢同步。。。不然生活的时间跨度太大,系统会崩溃的。。。


    此文主要是解决容器时间和宿主机时间不一致,从而导致在查询日志的时候出现问题(centos7)

如何消除时间问题

1、 设置宿主机或者物理机时间

    将时区设置为上海,主要使用命令timedatectl。

640?wx_fmt=png&wxfrom=5&wx_lazy=1

    如果时间不准确,那么可以进行时间同步,前提是先安装ntpdate包

640?wx_fmt=png

    将时间写入硬件时钟,再也不用担心时间重启之后要修改了,当然有ntp服务器来同步是最好的了。

640?wx_fmt=png

2、编译镜像

    在使用时区的时候,一般的镜像都是使用UTC时间,从而需要重新编译镜像,从而来修改时区,如下dockerfile文件。

640?wx_fmt=png

 [root@docker-ce elk]# docker build -t elkk . (编译镜像)

    在如上的Shanghai文件,也就是/usr/share/zoneinfo/Asia/Shanghai文件,将其拷贝到dockerfile的同一级目录即可。


3、 测试

640?wx_fmt=png

    从上可以看到时间已经一致。


4、 脚本

    运行脚本即可进行相关的配置

[root@docker2 ~]# cat timezone.sh 

#!/usr/bin/bash


#set the system timezone  

timedatectl set-timezone Asia/Shanghai


#Synchronize time

rpm -q ntpdate &>/dev/null

if [ $? == 0 ];then

ntpdate cn.pool.ntp.org

else

yum -y install ntpdate 

ntpdate cn.pool.ntp.org

fi

#write the time to hardware clcok

hwclock -w


#check

date 


640?wx_fmt=png


总结

    1、 主要是解决容器的时间和本地的时间不一致,从而导致日志在查看的时候,并不是真正的时间


    2、 当使用elk这种日志查看的时候,必须时间进行同步,否则在日志系统中,并不能查看对应的日志。


    3、 每个基础镜像不同,从而可能写dockerfile的写法不一样,这种目前仅仅在centos7上进行了测试。


640?wx_fmt=jpeg


猜你喜欢

转载自blog.csdn.net/TM6zNf87MDG7Bo/article/details/79256633