最近在使用Docker容器時,部署java程序發現時間輸出不對,在修改問題時總結以下。java
#date [-R] #查看主機時間
#timedatectl #查看主機時區
#tzselect #選擇時區,5 選擇亞洲 > 9 選擇中國時區 -> 1選擇北京時間 -> 1 選擇Yesdocker
修改主機時區bash
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 #重起機器
設置系統自動同步時間ui
vi /etc/crontab #設置定時任務 00 0 1 * * ntpdate -s cn.pool.ntp.org --每個月一號同步 * */1 * * * ntpdate -s cn.pool.ntp.org --每個小時同步
Docker時間和宿主同步方法spa
1.在run容器時添加參數掛載宿主時間配置: -v /etc/localtime:/etc/localtimecode
2.複製宿主localtime時間配置覆蓋: docker cp /etc/localtime container_id:/etc/localtimeblog
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/ ,謝謝合做。