Docker修改容器内部时间_linux

因:最近在捣鼓定时任务的时候发现我本地调试没问题,发到服务器上之后发现实际生效时间比设定的晚了8小时,于是记录一下解决方案,以便于日后查询!

linux服务的时间

查看时间

使用date

dete
# 输出结果
Fri Jun  2 10:51:20 CST 2023

使用timedatectl

timedatectl
# 输出结果
   Local time: Fri 2023-06-02 11:11:56 CST
  Universal time: Fri 2023-06-02 03:11:56 UTC
        RTC time: Fri 2023-06-02 03:11:55
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: no
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a

小贴士:这里讲解一下常见的两种时间
UTC时间:是零时区的时间,不同国家会在该时间的基础上进行调整
CST时间: 中央标准时间一般代表的是(美国:零区时减6个小时)、(澳大利亚:零区时加9个半小时)、(中国:零区时加8个小时)、(古巴:零区时减4个小时)
所以我们一般CST时间就足够了!

改变时间

查看可用时区

我们可以使用“ls”命令查看/usr/share/zoneinfo目录,它包含了所有可用的时区

ls /usr/share/zoneinfo
# 输出结果太多了,就不展示了

使用timedatectl更改时区

timedatectl set-timezone 时区
# 这里的时区就是上面ls里面的

docker容器的时间

从上面的结果可以看出linux的时间跟我本地的时间是一致的,那就可能是docker容器内部时间的问题了!

查看时间

查看容器id

这里简单介绍一下怎么查看正在运行容器

docker ps
# 这里就简单展示一下我的nginx容器
#后面命令就拿这个容器id 8b3909e33fcb来介绍
CONTAINER ID   IMAGE                     COMMAND                  CREATED        STATUS        PORTS                                                                      NAMES     COMMAND                  CREATED        STATUS        PORTS                                                                      NAMES
8b3909e33fcb   nginx                     "/docker-entrypoint.…"   2 months ago   Up 2 months   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   mynginx

进入容器

docker exec -it 8b3909e33fcb sh
# 上面的命令就进入容器内部的shell了

查看容器时间

其实跟上面差不多

date
# 输出结果
Fri Jun  2 02:34:29 UTC 2023

发现这里的时间有问题了,这就是为什么晚了8个小时的原因了,接下来改变它就行

docker cp /usr/share/zoneinfo/Asia/Shanghai 8b3909e33fcb:/usr/share/zoneinfo/Asia
# 输出结果
Successfully copied 2.56kB to 8b3909e33fcb:/usr/share/zoneinfo/Asia

这个时候再查看就发现时间变过来了,至此问题解决!


看到这里,就说明你对docker了解或者想要了解,可以关注公众号,后面不定时更新,当然也会更新其他内容,希望你喜欢!
下期见

Docker修改容器内部时间_linux_02

关注公众号了解更多