Docker commit命令无法保存更改。

10

是的,你说得对,有很多类似的话题。我没有找到解决我的问题的方法。所以给我一个机会!

我运行一个没有定义卷的Docker容器。所以我想要提交更改,例如:

docker commit 3a09b2588478 myfantasticimage
docker save myfantasticimage > /tmp/fantasticimagecommit.tar

现在我通过 scp 将图像传输到另一个 docker 主机并执行

docker load < /tmp/fantasticimagecommit.tar

我开始的图片没有变化,即使在提交之前做了更改。问题出在哪儿呢?根据 Dockerfile,没有定义卷。

谢谢!

更新:我通过docker inspect命令找到了卷。

"VolumesRW": {
    "/var/lib/": true,
    "/var/log/": true,
    "/var/www/": true
}

有什么解决方法吗?我想每6小时备份一次容器,这样我就可以在同一台或另一台机器上轻松地恢复它。


你列出的命令是正确的。如果你在提交后从镜像启动容器,那么你是否能看到你的更改?这将有助于确定它是否独立于保存/加载。 - Arthur Ulfeldt
你的 Dockerfile 基于的镜像中是否定义了卷?最好的方法是通过执行 docker inspect 3a09b2588478 命令来检查是否存在卷 - 查看 Volumes 条目。 - Mykola Gurov
备份您的卷,而不是您的容器。 - BMitch
2个回答

2
“docker commit”命令无法保存挂载卷的数据~ 您需要使用docker cp命令将文件复制到容器中~

0

如果想在另一台机器上保存和加载Docker镜像而不经过Docker Hub,请使用以下命令:

假设您有一个名为app.tar的文件,那么可以使用以下命令将其保存为app和标签号:

docker image save -o app.tar app:3

加载它使用下面的命令

docker image load -i app.tar

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