为什么我无法将时区更改为 CET 或欧洲/柏林
[[email protected] ~]# docker run -ti --rm debian:stretch bash
root@b65a4b63c152:/# cat /etc/timezone
Etc/UTC
root@b65a4b63c152:/# echo 'Europe/Berlin' > /etc/timezone
root@b65a4b63c152:/# cat /etc/timezone
Europe/Berlin
root@b65a4b63c152:/# dpkg-reconfigure -f noninteractive tzdata
Current default time zone: 'Etc/UTC'
Local time is now: Fri Mar 1 10:31:46 UTC 2019.
Universal Time is now: Fri Mar 1 10:31:46 UTC 2019.
root@b65a4b63c152:/# ls -l /usr/share/zoneinfo/Europe/Berlin
-rw-r--r-- 1 root root 2335 Dec 31 09:43 /usr/share/zoneinfo/Europe/Berlin
root@b65a4b63c152:/# echo $TZ
root@b65a4b63c152:/# date '+%Z %z'
UTC +0000
root@b65a4b63c152:/# cat /etc/timezone
Etc/UTC
答案1
容器不是虚拟机,它是在自己的文件系统和网络气泡中运行的进程。一些全局系统设置是从主机继承的。要更改容器中运行的进程的时区,只需设置 TZ 环境变量即可。这是拥有自己的时区的标准 Unix 方式(在可以在来自不同时区的用户之间共享的系统上)。
>> docker run -it --rm debian bash
root@719d5f1d0999:/# date
Fri Mar 1 10:54:56 UTC 2019
root@719d5f1d0999:/# export TZ='CET'
root@719d5f1d0999:/# date
Fri Mar 1 11:55:19 CET 2019