使用docker保存容器数据的最佳方法是什么?我希望能够保留一些数据,并在重新启动容器时能够恢复它们。我读过这篇有趣的post,但它并没有完全回答我的问题。
据我了解,我只有一个选择:
docker run -v /home/host/app:/home/container/app
这会将countainer文件夹挂载到主机上。
还有其他选择吗?仅供参考,我不使用链接容器(--link)
答案 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/