Docker容器内日期与CentOS系统时间不一致

时区介绍

  • 时区是为了方便全球各地人们协调时间而设立的一种时间划分方式,它是按照全球经线划分的
  • 目的是为了统一一个参考标准,方便人们在全球范围内协调工作和生活
  • 每个时区都有一个标准时间,地球上总共有24个时区
  • 每个时区都与协调世界时(UTC)相差一定的小时数,这个小时数可以是正数也可以是负数
  • 当地时间就是在标准时间的基础上加上/减去相应的小时数得到的
  • 在实际生活中,人们经常需要跨越不同的时区,这时就需要进行时区转换。比如我在北京,如果要给纽约的朋友打电话,就需要知道纽约所在的时区是几点,以便确定对方是否正在工作或者休息
  • 总之,时区在全球范围内协调生活和工作具有极为重要的作用,我们需要掌握时区的概念和用法,以便更好地适应现代化的社会生活
  • 而对于程序开发而言,作为中国的开发者,我们使用北京时间,也就是东八区。在服务器时区时间设置,以及时间的展示与存储,都要注意时区
  • 编码时,最好也要明确时区,防止程序在不同时区的系统上部署时,得到的不是自己想要的时间结果
  • 对于Java程序获取时间的问题,有兴趣的可以看下我这篇博客:Java获取当前时区时间LocalDateTime与System.currentTimeMillis

CentOS时区时间

  • 首先要确保你的Linux系统时间,是你需要的,可以使用timedatectl查看
  • Linux系统默认时区是UTC(Coordinated Universal Time,协调世界时),也就是默认是0时区UTC,我们使用时,可以根据需要将时区改为东八区(CST
  • 如果Linux系统时间与北京时间有误差,先要处理好,可以参考我这篇博客:【已解决】CentOS7等linux系统时区时间不对显示误差8小时

Docker容器里的时间

  • Docker容器内的系统也是Linux,默认也是0时区UTC
  • Docker容器里的时间是相对于宿主机时间来说是独立的,可以理解为是一个独立的时钟系统
  • 当容器启动时,它会继承宿主机的时间,但之后它的时间会与宿主机时间逐渐产生偏差。这是因为容器的时钟系统与宿主机的时钟系统不一定完全一致
  • 如果你的docker环境都要求东八区,和前面一样,也需要修改时区和时间
  • 不过docker容器有关闭、删除、重启等操作,不建议启动容器后再进入修改
  • 可以在docker-compose配置文件或者docker启动命令里设置,与宿主机系统保持一致即可
  • 这里给出docker-compose配置写法
  • 主要分2点,一是指定localtime,二是设置时区
  • /etc/localtime:/etc/localtime这个目录挂载,就是保证容器与宿主机的时区与时间同步
    volumes:
      - /etc/localtime:/etc/localtime
    environment:
      - TZ=Asia/Shanghai     
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坚持是一种态度

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值