爱生活,爱分享


docker 容器时间问题处理

haiten 2020-01-10 624浏览 0条评论
首页/正文
分享到: / / / /

前言

今天遇到docker容器内 java 应用程序时间和 mysql 数据时间不对的问题,记录下问题处理的方法,后续备用。

一、确认宿主的时间是否准确

1、主机时区

# 查看主机时区
timedatectl

# 设置主机时区(上海时间)
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
或
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

2、主机时区

# 查看主机时间
date

# 设置主机时间
date -s 10:00:00
hwclock -w

二、容器时区与宿主机同步

1、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

2、和宿主同步方法

# 1.在 run 容器时添加参数挂载宿主时间配置:
-v /etc/localtime:/etc/localtime

# 2.复制宿主 localtime 时间配置覆盖:
docker cp /etc/localtime container_id:/etc/localtime

3、Docker 设置 build 参数

ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

三、java 应用时区设置

# 在启动jar包添加时区参数:
-Duser.timezone=GMT+08

四、mysql 应用时区设置

1、通过命令修改

# 修改mysql全局时区为北京时间,即我们所在的东8区
set global time_zone = '+8:00'; 

 # 修改当前会话时区
set time_zone = '+8:00';

# 立即生效
flush privileges; 

2、通过修改my.cnf配置文件来修改时区

# vim /etc/my.cnf ##在[mysqld]区域中加上
default-time_zone = '+8:00'

# 重启mysql使新时区生效
# /etc/init.d/mysqld restart 
最后修改:2020-01-10 09:03:42 © 著作权归作者所有
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

上一篇

发表评论

说点什么吧~

评论列表

还没有人评论哦~赶快抢占沙发吧~