docker容器的设置本地时间(/etc/localtime)和本地时区(/etc/timezone)
本地时区的修改
一般情况下,我们启动docker容器时指定了环境变量:-e TZ:=Asia/Shanghai
,容器内的时区就会变成东八区,某些软件则会读取该环境变量作为其使用的时区,该环境变量相当于"残缺版"的命令:
echo 'Asia/Shanghai' >/etc/timezone
为什么说残缺版,继续往下看。
上述环境变量生效后,随之而变的还有本地时间(/etc/localtime),本地时间会根据时区自动调整,使用命令:date
查看:
root@75e7c81b599d:/# date
Tue Aug 8 10:12:05 CST 2023
本地时间的修改(一般不用设置,设置默认时区即可)
通过ll /etc/localtime
查看本地时间的指向,发现本地时间还是指向的默认的UTC:
root@75e7c81b599d:/# ll /etc/localtime
lrwxrwxrwx 1 root root 27 Dec 20 2021 /etc/localtime -> /usr/share/zoneinfo/Etc/UTC
但是为什么本地时间变成了对的时间呢?原因是上面已经正确设置了时区,date
命令会自动根据设置的时区进行调节。
root@75e7c81b599d:/# date -R
Tue, 08 Aug 2023 10:37:35 +0800
那么如果我们不设置正确的时区,默认会使用UTC时区,那么如何在不设定时区的情况下让本地时间变的准确呢?
使用软链重新指向即可
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
存在的问题
在linux中,有一些程序会自己计算时间(比如cron),这些程序直接获取本地时区,并不会读取你设置的环境变量,这时必须得修正本机的时区,所以执行下列设置,然后重启具体的服务。
echo 'Asia/Shanghai' >/etc/timezone
dockerfile永久改动
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了