我对无花果和码头工人容器感到困惑。
我正试图让Elastic Search在我的流浪盒上运行。
所以我有一个看起来像这样的图yml:
elasticsearch:
image: dockerfile/elasticsearch
ports:
- "9200:9200"
expose:
- "9200"
volumes:
- /docker_data/elasticsearch:/data
我运行它,弹性搜索运行正常。然后我在那里卷曲一些数据,我看到了。
关于fig yaml的卷部分 - 我试图将elasticsearch容器中的/ data文件夹挂载到docker_data,这样数据就会保持不变。
然而,令人困惑的是,当我进入我的宿主流浪汉机器并进入/ docker_data / elasticsearch时......它为空?
当我进入我的elasticsearch容器的/ data目录时...... 也是空的。
奇怪的是数据是持久的 - 所以我很难找到数据实际存储在docker容器中的位置,因为数据应该存储在那里。
当用mysql替换elasticsearch时遇到了同样的问题 - 当我挂载/ var / lib / mysql时,它在容器和主机上都显示为空。
最奇怪的是,如果我删除卷部分,一切都会保持不变。所以现在我很困惑这是怎么发生的,为什么我甚至还需要安装音量。
我正在运行docker 1.4.1
答案 0 :(得分:2)
我在理解卷时遇到了同样的问题。
您尝试做的是将容器中的卷安装到主机上,这是不可能的(从Docker 1.4.1开始的AFAIK)。
您只能将主机从您的主机挂载,这就是您正在做的以及为什么它是空的,因为Docker会为您创建一个空目录并将其安装在现有的“现有”上容器中的数据。
如果容器现在写入/data
,它也会出现在您的主机上,但在执行此操作时要小心权限,尤其是使用Vagrant或boot2docker时。
如果删除卷,则容器会保留其/data
,因为此文件夹被定义为容器Dockerfile的卷。有关卷的语法和持久性的详细信息,请查看文档。
地址:当您需要从容器中获取内容时,您可以执行的操作是/docker_data/elasticsearch:/data-to-copy
然后fig run elasticsearch cp -r /data /data-to-copy
。但我怀疑这对数据有用,虽然我在项目中something similar,但是对于应用程序模板的源代码。