【问题标题】:Docker data container, boot2docker, and the local file systemDocker 数据容器、boot2docker 和本地文件系统
【发布时间】:2015-02-05 19:42:17
【问题描述】:

我正在慢慢了解当前的 Docker 实践。我在 Mac 上,我正在使用 boot2docker。

我已经能够使用 docker -v local/directory:container/directory 方法将容器目录链接到我的本地文件系统。太好了,现在我可以轻松地在我的本地 Mac 文件系统中编辑站点代码之类的内容,并且可以立即将更改用于我的容器(例如 /var/www/html)。

我现在正试图将我的容器分成离散的关注点。例如,Web、数据库和文件(例如,busybox)容器对于 Wordpress 站点很有用。问题是,我不知道如何让我的文件容器定义卷,然后我可以链接到我的本地操作系统(类似于 boot2docker 使用的 -v local/directory:container/directory)。

这可能不是最有说服力的问题,因为我仍在摸索学习 Docker,但如果您能理解我想要实现的目标,我将非常感谢您提供的任何指导。

谢谢!

【问题讨论】:

  • 我可能误解了你的问题。 -v 标志用于将数据卷添加到容器。您是否参考了用户指南? (我会链接)
  • 我已经参考了 docker 和 boot2docker 文档,但是没有成功,这就是我来这里的原因。我有点慢,所以我将第三次重新阅读文档。

标签: docker boot2docker


【解决方案1】:

Docker Volumes User Guide


我将在我的简单示例中使用两个 docker 容器

marginalized_liskovplagiarized_engelbart

将主机目录挂载为数据卷(在运行时)

docker run -d -P --name marginalized_liskov -v /host/directory/context:/container/directory/context poop python server.py

marginalized_liskov 是容器的名称。

poop 不仅是我最喜欢的回文,也是我们正在创建的卷的名称。

"/host/directory/context" 是主机上要挂载的位置

"/container/directory/context" 是您希望在容器中创建新卷的位置

python 当然是要运行的应用程序

server.py 是为此示例提供给“python”的参数。


在容器中创建命名卷并将另一个容器挂载到该卷

docker create -v /poop --name marginalized_liskov training/postgres docker run -d --volumes-from marginalized_liskov --name plagiarized_engelbart ubuntu

这会创建两个容器。
marginalized_liskov 会创建一个名为 poop 的卷 我是从 postgres 训练图像构建的,因为这是用户指南中使用的内容。由于我们只是设置一个容器来包含数据量而不是托管应用程序,因此使用 training/postgres 映像提供了我们的功能,同时保持精简。

plagiarized_engelbart 使用--volumes-from 标志从marginalized_liskov 挂载卷。

【讨论】:

  • 便便现在也是我最喜欢的回文词了——当你有孩子的时候,便便就是一个很好的词。我正在尝试您的示例,我认为它显示了我想要实现的目标,但我还无法让它发挥作用。将继续尝试并报告。
  • 我终于搞定了。不知道为什么当我第一次尝试时它不起作用,可能是一些缓存问题,但是 boot2docker 提供的 -v local-path:container-path 功能实际上确实适用于数据容器(正如人们所期望的那样)。因此,您可以拥有一个引用本地文件系统的数据容器的 Web 容器。
  • 好交易。 [满足最低评论要求的额外字符]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-10
  • 1970-01-01
  • 1970-01-01
  • 2014-01-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多