当我在我的 PC 上运行 docker 容器时,它的日期/时间与主机 PC 完全不同。请参阅下面的命令。容器recognizerDev上的时间是前一天,不同小时,不同分钟到主机。知道发生了什么吗?
PS C:\Users\Bobby> date
11 October 2016 19:51:38
PS C:\Users\Bobby> docker exec recognizerDev date
Mon Oct 10 21:43:54 UTC 2016
Run Code Online (Sandbox Code Playgroud)
当我尝试在 AWS linux 主机上运行相同的东西时,日期/时间是正确的,除了由于时区导致的 1 小时差异。
请注意,根据我的 PC,第一个命令以 UTC+1(伦敦)返回正确的时间/日期。第二个命令说它是 UTC 但这不可能是正确的,好像它会在 1 小时内返回相同的结果。
这只是部分答案(因为它不一定能解决问题),但可能有助于诊断。
当您在 Linux 下(如在您的 AWS 主机上)运行 docker 时,您只是在主机上运行进程。也就是说,docker run fedora ls
与 running之间没有实质性区别ls
,只是前者对系统资源的看法略有不同。容器中报告的时间将始终与主机上报告的时间相匹配,取模时区设置。
当你在其他任何地方运行 docker 时(例如,在 Windows 或 MacOS 下),还有一个额外的层在起作用:docker 产生一个 Linux 虚拟机(过去使用 VirtualBox,尽管我认为它们现在可能会利用其他选项)然后运行虚拟机中的docker。
因为这实际上是与您的主机不同的机器,所以时间可能会漂移。有多种方法可以解决此类问题,包括在虚拟机内运行 ntp 或运行特殊的来宾代理,以确保与主机保持时间同步。我对 Docker 如何配置这些系统以了解它们如何或是否明确处理这一点知之甚少。
如果您的 docker vm 已经运行了很长时间,只需重新启动它就可以解决问题。可能docker machine restart是您所需要的。
归档时间: |
|
查看次数: |
11331 次 |
最近记录: |