1. 程式人生 > >Docker 容器中時間不同步解決方案

Docker 容器中時間不同步解決方案

問題描述

如果你執行docker 容器,發現容器內的docker時間與宿主機上的時間不一致,解決方法很容易。
但是要注意的是,java程式預設使用UTC時間,本地時間一般設定為CST時間,所以常會出現差8個時區的問題。
所以說你的java日誌出現了時間與北京時間差8小時問題,老老實實的去修改映象吧!!

解決方案

執行的是centos7容器,使用timedatectl進行校準。
timedatectl status | 檢視

[[email protected] ~]# timedatectl status
Local time: Fri 2017-12-22 11:39:25 CST
Universal time: Fri 2017-12-22 03:39:25 UTC
RTC time: Fri 2017-12-22 03:39:25
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a

timedatectl set-timezone Asia/Shanghai | 切換為北京時間

[[email protected] ~]# timedatectl set-timezone Asia/Shanghai
clock -w | 使之修改生效
[[email protected] ~]# clock -w

執行的是centos6.8, 使用/etc/sysconfig/clock校準

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo 'Asia/Shanghai' >/etc/timezone
cat << EOF > /etc/sysconfig/clock
ZONE="Asia/Shanghai"
EOF
grep ZONE /etc/sysconfig/clock
date -R; date +%z

那麼整理一下,我們可以寫到映象製作指令碼中

cat << EOF > /root/docker/Dockerfile
#繼承映象
FROM 172.16.1.150:5000/java_v1.2.0.171124
#作者資訊
MAINTAINER by cgls
#開始製作
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
RUN cat << EOF > /etc/sysconfig/clock 
ZONE="Asia/Shanghai" 
CMD ["/root/start.sh"]
EOF