我可以暂停/恢复一个Docker容器吗?

5
我正在使用Docker桌面版的Windows版本(Linux容器模式),运行一批高级波动声学模拟和游戏开发预计算工作。在我的AMD 3950x上(16核32线程),这项工作大约需要11天。问题是,我还需要将计算机用于其他工作(小型独立工作室在下班后使用计算机处理个人事务)。
因此,我希望能够暂停该工作,以便可以将计算机用于其他任务,然后稍后恢复该工作。请问是否可以实现这一点?我使用的是最新的Docker桌面版Windows版本。
3个回答

5

我正在使用最新版的Windows Docker桌面版。

2021年11月:使用最新版的Docker桌面版(包括Windows版本),您不再需要逐个暂停/恢复每个容器:

Docker Desktop 4.2发布: 使用暂停/恢复功能节省电池电量

在Docker Desktop 4.2中,我们很高兴地引入了暂停/恢复功能以及一系列更改,使您更容易管理更新。
这些功能适用于任何订阅层级的Docker Desktop用户。

使用暂停/恢复功能节省电池电量

暂停/恢复功能赋予开发人员暂停当前Docker Desktop会话并在需要时恢复工作的能力,在Docker被暂停时节省机器资源

当您暂停Docker Desktop时,容器的当前状态将保存在内存中,并且所有进程都将被冻结。这降低了CPU使用率,并有助于延长笔记本电池寿命。要恢复Docker Desktop,请单击菜单中的“恢复”按钮或在终端中键入任何Docker CLI命令。

要在Docker Desktop 4.2上尝试此功能,请导航到鲸鱼菜单并单击“暂停”按钮。
然后,Docker Desktop左侧边栏项目的相应内容部分(例如容器)将被覆盖,以清楚地表示暂停状态。

请注意,暂停/恢复功能目前不适用于Windows容器模式。

https://i1.wp.com/www.docker.com/blog/wp-content/uploads/2021/11/image.png?resize=1536%2C913&ssl=1


3

1

有一个暂停取消暂停命令。但这些只是暂停进程,所以它们不会在重新启动机器后继续运行。

可能你想要一些持久性的东西。为此,你可以选择两个命令集:

保存/加载

使用保存命令,你将创建一个tar档案,其中包含容器当前状态。使用加载可以再次启动该状态。缺点是所有镜像层都将被保存。因此可能导致大型存档文件。

导出/导入

作为替代方案,你可以使用导出来导出容器的第一层。

docker export命令不会导出与容器关联的卷内容。如果一个卷被挂载在容器中的现有目录上,docker export将会导出底层目录的内容,而不是卷的内容。
使用导入命令可以重新创建容器。
好处是你最终得到的是小文件,并且导入速度更快,因为你的机器上可能已经存在底层层。
在这两种情况下,您都可以与其他机器共享生成的文件并将其存储在私有仓库中。 还请参阅迁移指南以获得更多灵感。

实际上暂停是可以的,如果需要,我总是可以将机器放入睡眠状态。我尝试了暂停和恢复暂停,并且它们都可以工作,输出结果没有被破坏并且通过了校验和测试。 - Anders
这是正确的 - 在操作系统级别,睡眠或休眠通常会保留内存(RAM)内容。但是,如果您暂停然后重新启动主机,内存将被清除,因此Docker暂停在内存中的状态也将被清除(它将丢失,并且没有取消暂停的选项,只有重新启动容器的选项)。 (至少这是我对此的理解,我还没有机会测试暂停+主机重启,但) - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接