提交正在运行的Docker容器(暂停),然后运行它,图像的内部状态是什么

假设我有一个在Docker容器中运行的Python程序

import time counter = 0 while True: counter += 1 print counter time.sleep(1) 

如果我在该正在运行的容器上执行提交,然后使用该新映像运行新的容器,会发生什么?

文档声明一个正在运行的容器被暂停(cgroups冰箱),并在提交后被取消暂停。 图像处于什么状态? SIGKILL? 我认为在该图像上执行docker start时python程序不会再运行了,对吗?

我问,因为我有容器中运行的几个Java服务器(Atlassian),所以我不知道是否通过在该容器提交日常备份,然后我“恢复”(docker运行…备份/ 20160118)其中一个备份,服务器处于什么状态?

Docker提交只提交容器的文件系统更改,所以在启动容器后, 文件系统上的任何文件都被添加,删除或修改。

请注意,任何--volumeVOLUME不是容器文件系统的一部分,因此不会被提交。

内存中状态:“检查点和恢复”

提交容器, 包括当前的(内存中)状态,要复杂得多。 这个过程被称为“检查点和恢复”。 你可以在https://criu.org上find更多的信息。 目前有一个拉取请求,为检查点添加基本支持并恢复到Docker; https://github.com/docker/docker/pull/13602 ,但该function尚不支持“迁移”这样的容器到不同的机器。