本地时区的更改
通常情况下容器 docker查看linux是什么系统,我们启动docker容器时指定了环境变量:-eTZ:=Asia/Shanghai,容器内的时区都会弄成东八区,个别软件则会读取该环境变量作为其使用的时区,该环境变量相当于”残缺版”的命令:
echo 'Asia/Shanghai' >/etc/timezone
为何说残缺版,继续往下看。
上述环境变量生效后,骤然而变的还有本地时间(/etc/localtime),本地时间会依照时区手动调整,使用命令:date查看:
root@75e7c81b599d:/# date
Tue Aug 8 10:12:05 CST 2023
本地时间的更改(通常不用设置,设置默认时区即可)
通过ll/etc/localtime查看本地时间的指向容器 docker,发觉本地时间还是指向的默认的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),这种程序直接获取本地时区,并不会读取你设置的环境变量,这时必须得修正本机的时区查看系统版本linux,所以执行下述设置,之后重启具体的服务。
echo 'Asia/Shanghai' >/etc/timezone
dockerfile永久改动
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone