最近在使用Docker容器時,部署java程序發現時間輸出不對,在修改問題時總結如下。
#date [-R] #查看主機時間
#timedatectl #查看主機時區
#tzselect #選擇時區,5 選擇亞洲 > 9 選擇中國時區 -> 1選擇北京時間 -> 1 選擇Yes
修改主機時區
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #上海時間
rm /etc/localtime ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #上海時間
更新主機時間
date #查看當前系統時間 yum install -y ntpdate #安裝ntpdate程序 ntpdate cn.pool.ntp.org #更新系統時間 date #再次查看當前系統時間
網絡時間服務器
ntp1.aliyun.com ntp2.aliyun.com ntp3.aliyun.com ntp4.aliyun.com ntp5.aliyun.com ntp6.aliyun.com ntp7.aliyun.com 0.cn.pool.ntp.org 1.cn.pool.ntp.org 2.cn.pool.ntp.org 3.cn.pool.ntp.org
同步BIOS時鍾,強制把系統時間寫入CMOS
clock --show #查看硬件時間 clock -w #強制把系統時間寫入CMOS clock --show #查看硬件時間 reboot #重起機器
設置系統自動同步時間
vi /etc/crontab #設置定時任務 00 0 1 * * ntpdate -s cn.pool.ntp.org --每月一號同步 * */1 * * * ntpdate -s cn.pool.ntp.org --每一個小時同步
Docker時間和宿主同步方法
1.在run容器時添加參數掛載宿主時間配置: -v /etc/localtime:/etc/localtime
2.復制宿主localtime時間配置覆蓋: docker cp /etc/localtime container_id:/etc/localtime
3.在啟動jar包添加時區參數: -Duser.timezone=GMT+08
Docker容器設置時區
#docker exec -it container_id /bin/bash #進入容器命令
#修改時區,設置為上海時區
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
或者
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
Docker設置build參數
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
構建dockerfile鏡像.
備注:
作者:Shengming Zeng
博客:http://www.cnblogs.com/zengming/
嚴正聲明:
1.由於本博客部分資源來自互聯網,版權均歸原作者所有。轉載的目的是用於學術交流與討論學習,將不對任何資源負法律責任。
2.若無意中侵犯到您的版權利益,請來信聯系我,我會在收到信息后會盡快給予處理!
3.所有資源內容僅供學習交流之用,請勿用作商業用途,謝謝。
4.如有轉發請注明出處,來源於http://www.cnblogs.com/zengming/ ,謝謝合作。