Docker 将正在运行的容器与容器生成的数据一起移动

Docker 将正在运行的容器与容器生成的数据一起移动,docker,migration,persistence,Docker,Migration,Persistence,我想问一个关于如何动态移动正在运行的容器以及容器生成的数据的问题。我知道docker容器的映像可以创建并移动到其他地方,docker卷允许我获取主机上容器生成的数据。这是我的问题。假设我有一个正在运行的容器,它执行迭代计算并在每次迭代后将结果写入docker卷,我希望将容器连同中间结果(docker卷中的任何可用结果)一起移动到具有docker引擎的远程主机。迁移后,我将加载保存的docker映像和数据,以便在远程主机上继续计算。“docker save”命令允许我获取容器的图像,并且可以从主机

我想问一个关于如何动态移动正在运行的容器以及容器生成的数据的问题。我知道docker容器的映像可以创建并移动到其他地方,docker卷允许我获取主机上容器生成的数据。这是我的问题。假设我有一个正在运行的容器,它执行迭代计算并在每次迭代后将结果写入docker卷,我希望将容器连同中间结果(docker卷中的任何可用结果)一起移动到具有docker引擎的远程主机。迁移后,我将加载保存的docker映像和数据,以便在远程主机上继续计算。“docker save”命令允许我获取容器的图像,并且可以从主机上的docker卷访问容器生成的中间结果。但是,当我从docker卷读取数据时,如何知道容器是否正在写入数据?换句话说,在这种情况下,如何避免写入和读取的并发?提前感谢。

容器只是流程的包装。如果您在问题中用“流程”替换“容器”,您将如何解决相同的问题?(例如,停止容器/进程,将数据复制到另一台主机,然后启动新的容器/进程将是一种典型的方法。)David,感谢您的回复。容器在docker引擎内部运行,该引擎将所有容器与主机隔离,并且只能通过某些方式从docker引擎外部访问容器,例如通过端口。读/写锁通常可以用来防止读写同时发生,但在我的例子中,写发生在docker引擎内部,而读发生在docker引擎外部。我不知道你怎么能在这种情况下使用这种锁。您所建议的(停止/复制/启动)只有在编写结果时不停止容器时才有效,但这并不能保证。