之前在随笔中《Linux (RHEL)修改时区》 介绍了时区修改方法。
默认OCI实例中,时区是GMT,在国内用看着这个时区就是很别扭的事情,于是修改时区,实测无需配置 /etc/sysconfig/clock
文件,就只需要执行:
sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
上述一条命令执行后,即可成功修改为CST时区,实测如下:
[opc@oci-002 ~]$ date
2021年 12月 13日 星期一 09:10:43 GMT
[opc@oci-002 ~]$ sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
[opc@oci-002 ~]$ date
2021年 12月 13日 星期一 17:10:46 CST
但是OCI里面的docker环境还是UTC的时区,如何修改呢?
如果简单的思考方式,同样是进入docker的shell环境,同样方法也可以修改时区:
[opc@oci-002 ~]$ docker exec -itu root testdb bash
bash-4.2# date
Mon Dec 13 09:15:17 UTC 2021
bash-4.2# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
bash-4.2# date
Mon Dec 13 17:15:21 CST 2021
[opc@oci-002 ~]$ docker exec -it testdb bash
[oracle@6b1426c1218c ~]$ date
Mon Dec 13 17:15:40 CST 2021
顺便提一下,起初看时区发现GMT和UTC时间显示是一样的,那为啥搞出两个名字?于是网上查了下二者的区别,如下:
GMT是前世界标准时,UTC是现世界标准时。
UTC 比 GMT更精准,以原子时计时,适应现代社会的精确计时。
但在不需要精确到秒的情况下,二者可以视为等同。
每年格林尼治天文台会发调时信息,基于UTC。
最后抛出个问题:如果部署的docker容器比较多?难道要一个个改时区吗?
个人感觉应该会有更方便的实现方式,比如能将宿主机的时区传递到docker环境中,或是docker创建时就指定正确的时区,我这次没深究,大家可以试试看,欢迎给出你的最佳实践。