最近在使用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/ ,谢谢合做。