gpt4 book ai didi

docker - 使用 Fig 和 Docker 了解挂载目录

转载 作者:行者123 更新时间:2023-12-02 19:13:35 25 4
gpt4 key购买 nike

我对 fig 和 docker 容器感到困惑。

我正在尝试在我的 vagrant box 上启动并运行 Elastic Search。

所以我有一个看起来像这样的 fig yml:

elasticsearch:
image: dockerfile/elasticsearch
ports:
- "9200:9200"
expose:
- "9200"
volumes:
- /docker_data/elasticsearch:/data

我运行它, Elasticsearch 运行良好。然后我在那里 curl 一些数据,我看到了。

关于 fig yaml 的一部分 - 我尝试将 elasticsearch 容器内的/data 文件夹挂载到 docker_data 上,这样数据就会保持不变。

然而,非常令人困惑的是,当我进入我的主机 vagrant 机器并 cd 进入/docker_data/elasticsearch ...它是 ?

当我 cd 进入我的 elasticsearch 容器的/data 目录时......它是 也是空的 .

奇怪的是数据是持久的 - 所以我很难找出数据实际存储在 docker 容器中的位置,因为根据文档数据应该存储在那里。

我在用 mysql 替换 elasticsearch 时遇到了同样的问题 - 当我挂载/var/lib/mysql 时,它在容器和主机上都显示为空。

最奇怪的部分是,如果我删除卷部分,一切都会保持不变。所以现在我很困惑这是怎么发生的,为什么我什至需要安装卷。

我正在运行 docker 1.4.1

最佳答案

我在理解卷时遇到了完全相同的问题。

您尝试做的是安装卷 从你的容器到你的主机 ,这是不可能的(从 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在项目中,但用于应用程序模板的源代码。

关于docker - 使用 Fig 和 Docker 了解挂载目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28099528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com