主机时区更改不会反映在 docker 容器上
对于一个项目,我需要一个时区与主机时区同步的容器。我的容器应该能够在运行时同步到主机上的时区更改。为此,我根据谷歌搜索主题安装了 /etc/localtime 符号链接和 /etc/timezone 文件。
我的主机是 Ubuntu 20.04.4 LTS。
下面是我的 docker run 命令:
docker run \
-v /etc/localtime:/etc/localtime:ro \
-v /etc/timezone:/etc/timezone:ro \
--name openjdk-jdk11-slim \
-it --rm \
openjdk:11-jre-slim
容器启动后,如果我通过以下方式更改主机的时区:
sudo timedatectl set-timezone Africa/Bissau
我看到容器(容器的交互式终端)内的 date 命令仍然输出创建容器时的时区状态。更改主机上的时区后,如果我重新创建容器,那么只有我才能在容器中获取新时区。
有没有一种优雅的方法来解决这个问题?
PS:我的Docker版本如下;
testuser@test-ubuntu:~$ docker --version
Docker version 20.10.7, build 20.10.7-0ubuntu5~20.04.2
For a project, I need a container whose timezone is synced to host machine's timezone. My container should have the ability to sync to timezone changes on host machine at runtime. For this purpose I mounted /etc/localtime symlink and /etc/timezone file as per googling the topic.
My host machine is Ubuntu 20.04.4 LTS.
Below is my docker run command:
docker run \
-v /etc/localtime:/etc/localtime:ro \
-v /etc/timezone:/etc/timezone:ro \
--name openjdk-jdk11-slim \
-it --rm \
openjdk:11-jre-slim
After container starts, if I change the timezone of host machine via;
sudo timedatectl set-timezone Africa/Bissau
I see that date command inside container (container's interactive terminal) still outputs the timezone state of when container created. After changing timezone on host, if I recreate container, then only I can get the new timezone in container.
Is there an elegant way to fix this?
PS: My Docker version is as follows;
testuser@test-ubuntu:~$ docker --version
Docker version 20.10.7, build 20.10.7-0ubuntu5~20.04.2
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您是否尝试在 Docker 容器中设置环境变量?举个例子,
Did you try to set an environment variable in the Docker container? As an example,
通过 cat 填充 TZ,以便它是自动的:
Populate the TZ via cat so it's automatic: