我在tomcat中有一个运行程序的容器。我只需要在这个容器中更改日期并测试我的程序行为。我有时间敏感的逻辑,有时需要看看几天或几个月后会发生什么。在码头有可能吗?我读到如果我在容器中更改日期,主机系统上的日期将被更改。但这对我来说是个坏主意。我需要在一台服务器上有几个这个应用程序的实例,并且有可能为每个实例设置不同的时间。
但是,当我尝试更改容器内的日期时,出现错误:
sudo date 04101812
date: cannot set date: Operation not permitted
Fri Apr 10 18:12:00 UTC 2015
原文由 Aleksey Mitskevich 发布,翻译遵循 CC BY-SA 4.0 许可协议
在不影响主机操作系统的情况下,动态更改 Docker 容器中的时间是很有可能的。
解决方案是伪造它。 这个库 拦截所有用于检索当前时间和日期的系统调用程序。
实施很容易。根据需要向 Dockerfile 添加功能:
请记住在运行要应用伪造时间的应用程序之前设置环境变量
LD_PRELOAD
。例子:
您现在可以动态更改服务器时间:
例子: