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

目录

  • 问题分析
  • 前提条件
  • 方法一:启动时进行映射
  • 方法二:复制时区信息到容器
  • `SpringBoot项目通过docker run映射时区无效,需要通过如下代码设定`

问题分析

在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);
    }

你可能感兴趣的:(开发组件,docker,docker,容器,nginx)