docker容器的时间和宿主机时间不一致相差8小时

问题分析

在docker容器和系统时间不一致是因为docker容器的原生时区为0时区,而宿主机时间是+8个时区

前提条件

先要确认宿主机时间是否正确
可以使用date命令

root@sony-HP-Notebook:/# date
2022年 06月 10日 星期五 16:14:28 CST

如果时间错误,则先进行对时

date -s $year.$month.$day-$hour:$minute:$second
date -s 2022.06.10-16:14:28

方法一:启动时进行映射

运行 docker run 添加 -v /etc/localtime:/etc/localtime 选项,如下:
如果统一时区还需要添加-v /etc/timezone:/etc/timezone

docker run -d -p 8080:80 -v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone nginx

方法二:复制时区信息到容器

该场景适用于已经创建的容器:

如果本机时区正确直接:

docker cp /etc/localtime nginx:/etc/localtime

如果本机时区不正确:

docker cp /usr/share/zoneinfo/Asia/Shanghai nginx:/etc/localtime

SpringBoot项目通过docker run映射时区无效,需要通过如下代码设定

public static void main(String[] args) {
        TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
        SpringApplication.run(InspectionApplication.class, args);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值