fre*_*rik 5 linux centos docker
我创建了一个 docker 容器,它在错误的时区运行。我个人需要它在我的时区运行(欧洲/斯德哥尔摩,GMT+1)。由于该项目是开源的,其他用户也可能希望改变它。我希望任何人都可以轻松地在 Dockerfile 或 docker-compose.yml 中更改它。
如果可能,我还希望该解决方案不仅适用于 CentOS,以防有人希望使用不同的发行版。
在我的 docker 容器中设置本地时间/时区的最与发行版无关的方法是什么?
这两种方法似乎很常见,但我不确定它们是否真的对我来说是最好的方法:
一些 Linux 发行版读取 TZ 环境变量。但是,我注意到当我使用centos:7图像时它不起作用。
您可以在 docker-compose.yml 中将容器映射/etc/localtime到/etc/localtime主机上。但是这样做时,使用的发行版/etc/timezone会保留在 UTC 和软件中,这些软件可能正在读取然后会读取错误的时区。
小智 3
与发行版无关的需要一个脚本来检测正在使用哪个发行版。这是因为每个发行版“系列”都有不同的时区标记方式。对于某些人来说,将以下内容添加到 Dockerfile 可能会起作用:
RUN echo "欧洲/斯德哥尔摩" > /etc/timezone
其他(例如 Debian)需要使用上述命令,然后使用另一个 Dockerfile 命令,例如:
运行 运行 sudo dpkg-reconfigure -f 非交互式 tzdata
其他发行版(IIRC,包括 CentOS)需要类似:
运行 ln -s /usr/share/zoneinfo/Europe/Stockhom /etc/localtime
使其与发行版无关需要研究每个发行版重新配置时区的方法。如果您查看 /etc/localtime,您会发现它不是一个文本文件。
| 归档时间: |
|
| 查看次数: |
4876 次 |
| 最近记录: |