序言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上進行了測試。