• docker容器的设置本地时间(/etc/localtime)和本地时区(/etc/timezone)


    本地时区的修改

    一般情况下,我们启动docker容器时指定了环境变量:

    -e TZ:=Asia/Ho_Chi_Minh

    ,容器内的时区就会变成东八区,某些软件则会读取该环境变量作为其使用的时区,该环境变量相当于"残缺版"的命令:

    echo 'Asia/Ho_Chi_Minh' >/etc/timezone
    
    • 1

    为什么说残缺版,继续往下看。

    上述环境变量生效后,随之而变的还有本地时间(/etc/localtime),本地时间会根据时区自动调整,使用命令:date查看:

    root@75e7c81b599d:/# date
    Tue Aug  8 10:12:05 CST 2023
    
    • 1
    • 2

    本地时间的修改(一般不用设置,设置默认时区即可)
    通过ll /etc/localtime查看本地时间的指向,发现本地时间还是指向的默认的UTC:

    root@75e7c81b599d:/# ll /etc/localtime
    lrwxrwxrwx 1 root root 27 Dec 20  2021 /etc/localtime -> /usr/share/zoneinfo/Etc/UTC
    
    • 1
    • 2

    但是为什么本地时间变成了对的时间呢?原因是上面已经正确设置了时区,date命令会自动根据设置的时区进行调节。

    root@75e7c81b599d:/# date -R
    Tue, 08 Aug 2023 10:37:35 +0800
    
    • 1
    • 2

    那么如果我们不设置正确的时区,默认会使用UTC时区,那么如何在不设定时区的情况下让本地时间变的准确呢?使用软链重新指向即可

    ln -sf /usr/share/zoneinfo/Asia/Ho_Chi_Minh /etc/localtime
    
    • 1

    存在的问题

    在linux中,有一些程序会自己计算时间(比如cron),这些程序直接获取本地时区,并不会读取你设置的环境变量,这时必须得修正本机的时区,所以执行下列设置,然后重启具体的服务。

    echo 'Asia/Ho_Chi_Minh' >/etc/timezone
    
    • 1

    dockerfile永久改动

    RUN ln -sf /usr/share/zoneinfo/Asia/Ho_Chi_Minh /etc/localtime
    RUN echo 'Asia/Ho_Chi_Minh' >/etc/timezone
    
    • 1
    • 2
  • 相关阅读:
    基于java+SpringBoot+VUE+Mysql在线实验室管理系统
    Django测试与持续集成:从入门到精通
    iphone视频照片恢复
    Apache Kyuubi 在小米大数据平台的应用实践
    手把手教你做主成分分析
    47-5 内网渗透 - 提权环境搭建
    django 操作
    Redis缓存相关问题
    C++入门基础(下)
    数据类型 (C语言)
  • 原文地址:https://blog.csdn.net/sinat_41617212/article/details/133125234