卷和数据持久性

时间:2014-10-20 14:13:24

标签: docker

使用docker保存容器数据的最佳方法是什么?我希望能够保留一些数据,并在重新启动容器时能够恢复它们。我读过这篇有趣的post,但它并没有完全回答我的问题。

据我了解,我只有一个选择:

docker run -v /home/host/app:/home/container/app

这会将countainer文件夹挂载到主机上。

还有其他选择吗?仅供参考,我不使用链接容器(--link)

2 个答案:

答案 0 :(得分:2)

使用卷是处理要从容器中保留的数据的最佳方式。使用-v标记效果很好,你不应该遇到这个问题。

您还可以使用VOLUME中的Dockerfile指令,这意味着您不必在运行时添加任何其他选项,但是它们与特定容器紧密耦合,您' d需要使用docker start而不是docker run来获取数据(或者当然是-v到过去创建的卷,可能在/var/某处)

处理卷的常用方法是创建data volume container,其中包含由-v定义的卷。然后,在创建应用容器时,使用--volumes-from标志。这将使您的新容器使用与您使用-v(您的数据卷容器)的容器相同的卷。当然,这似乎是你在其他地方转移问题。

这使得在多个容器上共享卷非常简单。也许你的应用程序有一个容器,另一个用于logstash。

答案 1 :(得分:0)

创建一个卷容器:这种格式-v创建一个卷,目录,例如/var/lib/docker/volume/d3b0d5b781b7f92771b7342824c9f136c883af321a6e9fbe9740e18b93f29b69 它仍然是一个绑定挂载/容器/路径/卷

docker run -v /foo/bar/vol --name volbox ubuntu

我现在可以使用这个容器作为我的音量。

docker run --volumes-from volbox --name foobox ubuntu /bin/bash
root@foobox# ls /container/path/vol

现在,如果我分发这两个容器,它们就会起作用。无论将哪个主机部署到foobox,该卷都将始终可用。

如果您不希望存储位于/ var / lib / docker / volumes中,那么当然会出现问题......

我建议你看一下迈克尔克罗斯比的一些优秀帖子 https://docs.docker.com/userguide/dockervolumes/ 和docker docs https://docs.docker.com/userguide/dockervolumes/