我运行一些Docker Windows容器。我正在寻找备份这些容器的方法,而他们正在正在运行。但是当我尝试使用标准方法来备份容器时,我会遇到这样的错误:
PS C:\Users\roza> docker commit 908d6334d554
Error response from daemon: windows does not support commit of a running container
PS C:\Users\roza> docker export 908d6334d554 -o tar.tar
Error response from daemon: the daemon on this platform does not support export of a container
为什么我无法提交/导出正在运行 Windows容器?
是否有一些(可能是非标准且非常棘手,可能使用外部工具)方法来创建此类容器的备份?
答案 0 :(得分:1)
这可能不是你想听的但是...... 在容器世界中,不需要备份正在运行的容器。如果在容器存在时丢失了某些东西,那么应该更好地分割图像。在容器被杀死之后必须存活的任何东西(日志,资产甚至临时文件夹)都应该映射为卷。这将使您更好地控制备份。
答案 1 :(得分:1)
Windows容器的提交还涉及首先停止它,然后提交。另一个限制是基于VSS的应用程序不会与容器互操作。正如前面的回答所建议的那样,容器的标准方法是简单地从图像中启动一个新容器。
答案 2 :(得分:1)
来自Microsoft的Windows图像(所有Windows图像)都已获得许可,我相信部分许可意味着您无法导出图像。缺少暂停/取消暂停是因为底层实现。 Linux会在Windows上暂停cgroups。只有Windows HyperV容器支持暂停,因为它们使用HyperV命令来实现它。
那就是说,备份Docker中的任何东西都需要备份3件事:
你不是自己备份容器,它们是短暂的,像牛一样对待。卷数据将是文件系统目录,您将在此目录中使用标准备份工具。如果在容器运行时无法进行备份,请先停止容器,然后在备份完成后重新启动容器。