通过导出/导入移动Docker容器:丢失像启动命令一样的configuration

我想将容器从一个主机移动到另一个主机。 容器已经更新了文件系统中的数据,所以我不想移动原始图像(docker save),而是使用docker export来移动容器。

所以我用

docker export l4bnode > l4bnode.tar 

在旧主机上,将该文件复制到新主机,然后导入映像

 cat l4bnode.tar | docker import - andi/l4bnode 

在新的一个。 但是..它看起来像我在Dockerfile中的所有configuration数据(并且我也可以在运行容器时指定/在命令行中指定)丢失。 我试过了

 docker run andi/l4bnode 

并得到

 docker: Error response from daemon: No command specified. 

使用docker检查,我看到导入的图像上的所有数据是空的,虽然它是在导出的正在运行的容器上设置的。 我主要是缺less启动命令,工作目录,环境variables和暴露的端口(其中一些我必须改变,然后由于迁移和新的环境)。

如何在新主机上应用原始configuration,或者最好是正确迁移它?

您可以提交当前的容器状态作为新的图像。 然后使用保存/加载新的图像。

这就是说,这是你一般应该尽量避免的。 运行时数据应保存在卷中,任何configuration更改应通过Dockerfile重build进行。