序言docker
时间,老是宝贵的,可是,可能你生活在超前的八小时,我生活在落后的八小时,时间不统一,从而有了时间之间的差别。
centos
UTC和CST时间相差8个小时,宿主机上的时间是CST时间,而容器上的时间通常都是UTC时间,从而老是须要从新编译镜像来达到时间相同的目的。
bash
你生活在什么时间,生活在过去?仍是生活在如今?梦中梦。。。。
服务器
慢同步。。。慢慢同步。。。否则生活的时间跨度太大,系统会崩溃的。。。
app
此文主要是解决容器时间和宿主机时间不一致,从而致使在查询日志的时候出现问题(centos7)。
ide
如何消除时间问题测试
一、 设置宿主机或者物理机时间ui
将时区设置为上海,主要使用命令timedatectl。centos7
若是时间不许确,那么能够进行时间同步,前提是先安装ntpdate包。
spa
将时间写入硬件时钟,不再用担忧时间重启以后要修改了,固然有ntp服务器来同步是最好的了。
二、编译镜像
在使用时区的时候,通常的镜像都是使用UTC时间,从而须要从新编译镜像,从而来修改时区,以下dockerfile文件。
[root@docker-ce elk]# docker build -t elkk . (编译镜像)
在如上的Shanghai文件,也就是/usr/share/zoneinfo/Asia/Shanghai文件,将其拷贝到dockerfile的同一级目录便可。
三、 测试
从上能够看到时间已经一致。
四、 脚本
运行脚本便可进行相关的配置
[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
总结
一、 主要是解决容器的时间和本地的时间不一致,从而致使日志在查看的时候,并非真正的时间
二、 当使用elk这种日志查看的时候,必须时间进行同步,不然在日志系统中,并不能查看对应的日志。
三、 每一个基础镜像不一样,从而可能写dockerfile的写法不同,这种目前仅仅在centos7上进行了测试。