记录一次docker容器引起的时间相差8h的问题

2023-05-16

一、背景

系统打印日志时间小8h,部分插入mysql的日期却大8h,简直诡异。
测试时间是上午10:05
在这里插入图片描述
经过排查,mysql设置的时区,链接url设置的时区都是ok的。而且有其他服务时间正常,故排除MySQL的问题。

二、排查

2.1 查看服务器时间 ok的

[root@nb002 ~]# date
2023年 05月 05日 星期五 10:07:24 CST

在这里插入图片描述

2.2 查看所在容器系统时间 不对少8h

查看所在容器系统时间命令:

docker exec -it  容器id date
[root@nb002 ~]# docker exec -it f9bd68ffc5d0  date
Fri May  5 02:02:02 UTC 2023

在这里插入图片描述

2.3 再看一个时间正确的服务所在容器的系统时间 ok的

[root@nb002 ~]# docker exec -it 19cb8f93385d  date
Fri May  5 10:02:40 CST 2023

在这里插入图片描述

三、解决办法

3.1 修改基础镜像系统时区

找到服务Dockerfile的基础镜像对应的容器

[root@nb001 dicjdk8]# docker ps | grep jdk
992ca6b4fcca   openjdk:8                                  "bash"                   10 months ago   Up 10 months                                                                                                   dicjdk8

查看容器的时间,发现是少8h的

[root@nb001 dicjdk8]# docker exec -it 992ca6b4fcca date
Fri May  5 02:27:34 UTC 2023

进入容器修改系统时区

[root@nb001 dicjdk8]# docker exec -it 992ca6b4fcca bash

找到上海时区的位置(/usr/share/zoneinfo/Asia下的Shanghai)

root@992ca6b4fcca:/# cd /usr/share/zoneinfo/Asia
root@992ca6b4fcca:/usr/share/zoneinfo/Asia# ls
Aden    Ashgabat   Bangkok   Chita       Damascus   Gaza         Irkutsk    Kamchatka  Kolkata       Macau     Novokuznetsk  Pyongyang  Saigon     Srednekolymsk  Thimbu         Ulan_Bator   Yangon
Almaty  Ashkhabad  Barnaul   Choibalsan  Dhaka      Harbin       Istanbul   Karachi    Krasnoyarsk   Magadan   Novosibirsk   Qatar      Sakhalin   Taipei         Thimphu        Urumqi       Yekaterinburg
Amman   Atyrau     Beirut    Chongqing   Dili       Hebron       Jakarta    Kashgar    Kuala_Lumpur  Makassar  Omsk          Qostanay   Samarkand  Tashkent       Tokyo          Ust-Nera     Yerevan
Anadyr  Baghdad    Bishkek   Chungking   Dubai      Ho_Chi_Minh  Jayapura   Kathmandu  Kuching       Manila    Oral          Qyzylorda  Seoul      Tbilisi        Tomsk          Vientiane
Aqtau   Bahrain    Brunei    Colombo     Dushanbe   Hong_Kong    Jerusalem  Katmandu   Kuwait        Muscat    Phnom_Penh    Rangoon    Shanghai   Tehran         Ujung_Pandang  Vladivostok
Aqtobe  Baku       Calcutta  Dacca       Famagusta  Hovd         Kabul      Khandyga   Macao         Nicosia   Pontianak     Riyadh     Singapore  Tel_Aviv       Ulaanbaatar    Yakutsk

```shell
# 查看容器内当前的时区 是UTC
root@992ca6b4fcca:/usr/share/zoneinfo/Asia# cd /etc/
root@992ca6b4fcca:/etc# cat localtime
TZif2UTCTZif2UTC
UTC0

将Asia/Shanghai覆盖当前时区

root@992ca6b4fcca:/etc# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
root@992ca6b4fcca:/etc# date
Fri May  5 10:30:40 CST 2023
root@992ca6b4fcca:/etc# 

3.2 修改Java所用时区

查看当前时区:是UTC

root@992ca6b4fcca:/etc# cat /etc/timezone
Etc/UTC

将Asia/Shanghai覆盖当前Java所用时区

echo /usr/share/zoneinfo/Asia/Shanghai > /etc/timezone

再次查看确认:

root@992ca6b4fcca:/usr/share/zoneinfo# cat /etc/timezone
/usr/share/zoneinfo/Asia/Shanghai

最后exit退出容器

3.3 重新打包docker镜像

命令:

docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]

完整示例:

docker commit -a "wangdy" 992ca6b4fcca reg.wangdy.com:9443/k8snb/openjdk:dic-cst-jdk8

3.4 推送到docker镜像仓库

这里是harbor

docker push reg.wangdy.com:9443/k8snb/openjdk:dic-cst-jdk8

3.5 对于有问题的服务,重新打包部署

修改Dockerfile

FROM reg.wangdy.com:9443/k8snb/openjdk:dic-cst-jdk8
ARG app
ADD <APP> app.jar
RUN ["/bin/bash", "-c", "chmod 777 app.jar "]
CMD java -Xms512M -Xmx2048M -jar /app.jar --server.port=8080

3.6 测试,看时间

之前错误的日志时间:已正确。
在这里插入图片描述

之前错误功能的时间: 已正确。
在这里插入图片描述

END

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

记录一次docker容器引起的时间相差8h的问题 的相关文章

  • 程序员平均月薪过万,想当程序员的话,大学学那些专业会更好呢?

    在互联网时代 xff0c 程序员成为炙手可热的职业 虽然加班累成狗 xff0c 也有可能面临英年早秃的局面 xff0c 但是不得不说程序员的工资高于很多很多传统行业职位的工资 据统计 xff0c 应届程序员毕业生在一线城市平均月薪达到8k
  • android4.0自定义锁屏总结【android锁屏研究一】

    最近搬家了 xff0c 从北京 gt 深圳 xff0c 除了天气有点不同外 xff0c 其他的都差不多 xff0c 工作性质和以前也类似 xff01 纪念一下自己的迁移 题外话 转载请表明出处 xff1a http blog csdn ne
  • android系统锁屏详解【android锁屏解析二】

    谷歌的代码写的确实不错 xff0c 我很幸运 xff0c 一开始接触代码就赶上了谷歌这个开源的系统 xff0c 让我的视野开阔了很多 xff0c 也让我看到了优秀的代码工程师写到的代码 心怀感恩之心 题记 我的有篇文章说了这个锁屏 xff0
  • 单片机学习笔记8--按键和外部中断(基于百问网STM32F103系列教程)

    第八章 按键和外部中断 第一节 按键原理 GPIO内部上拉较弱 xff0c 可根据满足电路需求选择是用内部的上拉还是自己外接上拉 根据原理图可知 xff0c 当按键松开时 xff0c 单片机引脚连接在高电平上 xff0c GPIO口输入高电
  • ARM架构与编程6--重定位(基于百问网ARM架构与编程教程视频)

    一 启动程序流程 我们之前讲过 xff0c 单片机有根据boot的不同 xff0c 有三种启动方式 xff1a boot0boot1启动模式0Xflash启动10系统存储器11内置SRAM 单片机上电复位后 xff0c 运行main函数 以
  • LVGL8.1版本笔记

    之前学过LVGL6 xff0c 现在版本更新到LVGL8了 xff0c 学习下新版本 xff0c 本文主要是记录一些LVGL8的新特性 xff0c 区别和lvgl6的不同之处 lv task handler 的作用 链接 lv task h
  • STM32F407定时器输入捕获

    STM32F407定时器一共有14个 其中分为基本定时器 通用定时器 高级定时器 具体功能如上图所示 下面介绍下输入捕获模式 输入捕获 xff1a 通过检测TIMx CHx上的边沿信号 在边沿信号发生跳变的时候 将当前的定时器的值 TIMx
  • 几种常见的存储器

    存储器分为易失性存储器和非易失性存储器 其中的易失性是指存储器掉电是否能保存数据 易失性存储器 xff1a 就是我们常说的RAM xff0c 这种存储器掉电后所有数据都消失 xff0c 不会被保存 xff0c 重新上电之后 xff0c 原来
  • FreeRTOS初级篇----优先级实验

    FreeRTOS创建任务时 xff0c 可以设置任务的优先级 在FreeRTOS中优先级的值越小 xff0c 优先级越低 xff0c 其他的RTOS都是优先级值越小 xff0c 优先级越高 xff0c 这点需要注意 任务优先级实验 xff1
  • FreeRTOS初级篇----删除任务

    任务既然可以被创建 xff0c 那么自然也可以被删除 xff0c 对于某些执行一次或几次就不需要的任务来说 xff0c 可以在执行完成后 xff0c 把此任务删除 xff0c 可以通过别的任务将其删除 xff0c 也可以任务自己删除自己 任
  • FreeRTOS初级篇----一个函数创建多个任务

    之前说过 xff0c 创建任务的时候 xff0c 可以传递给任务参数 xff0c 下面通过实验 xff0c 对一个任务函数传入不同的参数展示如何使用一个函数创建多个任务 任务函数 xff1a 把传入的数据转换为int型数据然后打印出来 sp
  • 大学生想要通过看书自学编程,却始终没成功,是因为你没有技巧!

    在大学里面 xff0c 有很多的方式来学习编程 xff0c 从在线教程到完成在线课程 xff0c 到密集编程的新手训练营 教程都很棒 xff0c 但它们通常只给你基础知识 与此同时 xff0c 在线教程和线下课程可能非常昂贵 xff0c 虽
  • FreeRTOS初级篇----任务管理

    一 任务状态 再FreeRTOS中 xff0c CPU同一时刻只执行一个任务 xff0c 只不过是所有任务切换的速度特别快 xff0c 默认1ms切换一次任务 xff0c 所以宏观上来看就是CPU再同时运行所有任务 根据任务的执行情况 xf
  • FreeRTOS中级篇

    一 内存管理 1 五种内存管理模式 FreeRTOS提供了5种内存管理实现方法 xff0c 可以根据不同的使用场合选择不同的模式 关于5中内存管理模式可以看下面这篇文章 链接 https zhuanlan zhihu com p 11527
  • LVGL8移植FATFS并适配到STM32F407

    目前LVGL版本已经更新到8 3版本 xff0c FATFS也是在嵌入式领域常用的文件系统 网上许多在LVGL上移植FATFS的教程大都是基于LVGL7版本的 xff0c 而且过程较为凌乱 本文旨在帮助大家了解在LVGL8上移植FATFS文
  • openstack dashboard简体中文汉化

    这里阐述的是fuel工具部署的openstack 环境的dashboard进行简体中文汉化 1 xff09 直接运行 apt get install gettext 命令 2 xff09 转到fuel已经配置好的中文配置文件夹下 cd us
  • 【转】gcc编译错误表

    conversion from s to s not supported by iconv iconv 不支持从 s 到 s 的转换 iconv open iconv open no iconv implementation cannot
  • _tcsstr的用法以及源码的源码

    tcsstr 字符串1在字符串2中首次出现的位置 xff0c 未出现返回NULL值 xff1b tcsrchr xff1a 字符1 在字符串2中首次出现的位置 xff0c 未出现返回NULL值 TCHAR字符串操作函数 xff1a tcsl
  • 修改ElementUI默认滚动条的样式

    一 默认的滚动条 很宽很占地方 xff0c 不美观 xff0c 与页面设计格格不入 二 优化后的滚动条 很美观 xff0c 可以根据实际风格调整颜色 xff0c 宽度 xff0c 高度等 三 优化代码 在全局样式里加入以下代码 xff0c
  • K8S异常之出现大量被驱逐的pod,导致服务无法访问的问题

    一 背景 用kuboard作为k8s管理工具的 xff0c 运行一段时间后 xff0c 访问时 xff0c 浏览器显示以下提示 xff1a 排查问题 1 查看k8s的情况 如下 xff0c 发现正常 root 64 nb001 data k

随机推荐