为什么Hyper-V虚拟机中的Docker容器状态不正确?

时间:2019-10-26 12:17:45

标签: docker hyper-v

整个故事:

通常,我使用docker ps检查容器状态以查看是否重新启动了容器。

最近,我在Windows10中安装了一台hyper-v机器,还在此hyper-v机器中安装了ubuntu18.04。同时,我在此ubuntu18.04中安装了docker。

我在这个ubuntu18.04中添加了一些容器,然后在睡觉前直接关闭了Windows10 pc。

某天以后,当我再次想起这个东西时,我启动了win10 pc,使用ssh到这台虚拟机,然后执行以下操作:

cake@cake:~$ docker ps
CONTAINER ID  IMAGE       COMMAND                  CREATED        STATUS        PORTS                  NAMES
0ac07c24c537  wordpress   "docker-entrypoint.s…"   5 days ago     Up 5 days     0.0.0.0:8080->80/tcp   gg_wordpress_1
3c47669c927f  mysql:5.7   "docker-entrypoint.s…"   5 days ago     Up 5 days     3306/tcp, 33060/tcp    gg_db_1

问题:

您可以看到5天前创建的容器,可以,但是STATUS显示容器已经用了5天。

我确定这5天我已经关闭了Windows10 pc,与此同时,找到上述内容之后,我还关闭了win10,以检查是否可以访问一项容器服务的8080?(结果是可以确保无法访问)。然后,我重新启动win10 pc,再次执行docker ps,假设STATUS类似于1 second ago,但仍然是5 days ago

注意::不建议使用docker for windows with MobyLinuxVM in hyperv,我只是想知道为什么会发生我的问题。

更新:

正如我在评论中所说:

  

如果在bash中执行uptime,它将显示:20:57:41 up 1 day, 2:23, 1 user, load average: 0.00, 0.00, 0.00

我有一种情况可以解释这一点:暂停hyper-v。这将使VM暂停,同时uptime停止计数,但是docker ps仍不停止计数,它只是实时计数。不知道为什么。

所以,我的情况可能是下一个:

a)5天前,我启动了容器。

b)4天前,我暂停了VM(不确定,也许其他操作与此类似)

c)刚才,对于某些不确定的操作,虚拟机未暂停。

d)然后,我可以uptime看到虚拟机启动了1天;但使用docker ps仍能看到该容器5天。

e)在这五天中,我当然没有关闭虚拟机;我只是不仅一次关闭了Windows10物理机。但这似乎并不影响虚拟linux机器的时间计数器。

因此,似乎直接关闭win10机器并不会影响hyper-v linux虚拟机的时间计数器。

换句话说:如果绕过VM暂停,如果我们直接关闭win10。然后,尽管hyper-v VM中的服务也会中断,但是当win10&hyper-v VM linux返回时,VM的行为就像永不停止一样,uptime也会在hyper-v VM停止期间进行计数。现在看来,我的问题仅限于这种Hyper-V行为。

任何人都可以解释这种hyper-v行为吗?

0 个答案:

没有答案