Linux或者Docker中时区查询和修改(差8小时问题)

server/2024/11/30 8:26:20/

前因:

当我们在Linux或者Docker中部署程序时(无论.Net或者Java或者等等)获取系统时间时(例如C# DateTime.Now),和北京时间差8小时。

解决:

一、版本1

先放几个Linux下常用命令:

1、查看当前时间 

date

输出 :

Tue Nov 26 09:25:29 CST 2024


2、查看详细时间  

timedatectl status

输出:

Local time: Mon 2024-11-25 17:59:14 CST
Universal time: Mon 2024-11-25 09:59:14 UTC
RTC time: Mon 2024-11-25 09:59:14
Time zone: Asia / Shanghai(CST, +0800)
NTP enabled: no
NTP synchronized: yes
RTC in local TZ: no
DST active: n / a

3、容器外查看Docker容器中时间

docker exec bc09f80ab449 date

其中 bc09f80ab449 是容器ID,通过Docker ps获取

4、进入Docker容器

docker exec -it bc09f80ab449 bash 
或者
【docker exec -it 容器ID /bin/bash】命令进入Docker容器内

执行【date】命令查看Docker容器的时间发现与宿主机有误差时,修改时间和时区。

5、修改Docker容器中时区

方法一:在【宿主机】中执行命令,【docker cp /etc/localtime 容器ID:/etc/localtime】,重启Docker容器。方法二:在【宿主机】中执行命令,【docker cp  /usr/share/zoneinfo/Asia/Shanghai 容器ID:/etc/localtime】,重启Docker容器。方法三:在【容器】中执行命令,【ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime】,重启Docker容器。

创建容器时,直接用宿主机器上的时区默认覆盖容器内的时区配置文件,也就是跟宿主机器同样的时区配置

docker run id -v /etc/localtime:/etc/localtime:ro  镜像名

但是发现通过java中new Date()获取到的仍然是容器默认的时区,因为java是通过获取timezone来设置时间的,所以容器也需要设置时区。

/* 这里配置的环境变量 Asia/Shanghai就是我所需要的时区 */
# docker run -e TZ="Asia/Shanghai" -v /etc/localtime:/etc/localtime:ro 镜像名

二、版本2

第一步:
备份原来的时区信息

[root@localhost ~]# mv /etc/localtime localtime.bak

第二步:
通过软链接将亚洲/上海 的时区信息 指导时区信息

[root@localhost ~]# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

第三步:
验证

[root@localhost ~]# date
2024年 07月 17日 星期三 14:35:12 CST

可以看到时区修改为CST,也就是正常的北京时间(东八区)
 

 


http://www.ppmy.cn/server/146119.html

相关文章

【VRChat 改模】着色器(shader)简介、预制体(prefab)简介

总览 1.着色器介绍 2.预制体介绍(.prefab 文件) 一、着色器 1.什么是着色器 2.VRChat 模型常用着色器 其中,日漫模型大部分使用 LilToon,欧美模型则使用 Poiyomi 较多 3.着色器 被存放在 工程文件夹的哪个目录下? …

【Qt】图片绘制不清晰的问题

背景 实现一个图片浏览器&#xff0c;可以支持放大/缩小查看图片。主要组件如下&#xff1a; // canvaswidget.h #ifndef CANVASWIDGET_H #define CANVASWIDGET_H#include <QWidget>class CanvasWidget : public QWidget {Q_OBJECT public:explicit CanvasWidget(QImag…

[Java基础] Lambda表达式 | 函数式接口

1. Lambda表达式 先看如下代码&#xff1a; public class LambdaDemo {public static void main(String[] args) {// 匿名内部类方式完成goSwimming(new Swimming() {Overridepublic void swim() {System.out.println("铁汁 , 我们去游泳吧....");}});// lambda表…

音视频基础扫盲之视频码率控制策略(CBR、VBR还是ABR)

视频码率控制策略 CBR&#xff08;Constant Bit Rate&#xff09;、VBR&#xff08;Variable Bit Rate&#xff09;和ABR&#xff08;Average Bit Rate&#xff09;是三种常见的比特率控制方式&#xff0c;以视频码率控制为例&#xff0c;视频码率控制策略主要是在保证视频质量…

容器第二天(day039)

1.jq处理json格式数据 使用场景&#xff1a;docker inspect出来的结果是json格式数据 安装&#xff1a;yum install -y jq 用法&#xff1a;docker inspect nginx:alpine |jq .[].GraphDriver.Data.WorkDir 遇到[]&#xff0c;则.[]。 2.容器管理 运行起来的镜像可以成为容…

SQL进阶技巧:非等值连接--单向近距离匹配

目录 0 场景描述 1 数据准备 2 问题分析 ​编辑 ​编辑 3 小结 数字化建设通关指南 0 场景描述 表 t_1 和表 t_2 通过 a 和 b 关联时&#xff0c;有相等的取相等的值匹配&#xff0c;不相等时每一 个 a 的值在 b 中找差值最小的来匹。 表 t_1&#xff1a;a 中无重复值…

Ubuntu-20.04安装 terminator

Ubuntu-20.04安装 terminator sudo apt install terminator 安装成功之后&#xff0c;在ubuntu终端里执行命令 terminator & terminator 窗口分割 基本操作 1. 创建新终端 水平分割&#xff1a;按下 Ctrl Shift E 创建一个新的水平分屏。 垂直分割&#xff1a;按下 Ct…

智能驾驶,车联网,传感器,车载电子集中展示|2025北京自动驾驶展

在这个充满创新与变革的时代&#xff0c;自动驾驶技术已经成为全球汽车产业的焦点之一。“2025北京国际自动驾驶技术展览会”正式开启预定&#xff0c;无疑为全球自动驾驶技术领域的专业人士、企业以及爱好者们提供了一个交流与展示的绝佳平台。此次展览会不仅将展示自动驾驶技…