首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从多个主机共享坞卷?

从多个主机共享坞卷?
EN

Stack Overflow用户
提问于 2018-04-28 12:41:16
回答 2查看 4.9K关注 0票数 3

https://nickjanetakis.com/blog/docker-tip-28-named-volumes-vs-path-based-volumes

似乎表明named volumespath based volumes都存储在码头主机中(在那里运行容器)。

假设我有webnginx服务。

我想我可以在一台主机上运行web服务,在另一台主机上运行nginx服务(两台不同的机器)。(虽然我刚刚开始学习对接的基础知识,而且要将服务分离给不同的主机还需要很长时间)

nginx容器是否有一种通过在两者之间共享卷来服务web服务所拥有的静态文件的方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-29 15:43:21

Docker目前还没有一个基于软件的解决方案,可以在多台机器之间共享卷。有关于无穷大的工作,但是他们还没有发布任何用于生产使用的内容。

有第三方存储解决方案,您可以使用。如果您在云提供商上,他们的解决方案通常对您的用例是最好的。对于一个自我托管的软件解决方案,您可以使用类似glusterfs之类的东西。处理数据复制的应用程序本身就是用于容器的,例如蟑螂数据库。

典型的自我托管解决方案是回到NFS上。即使是云提供商,我也通常使用他们的NFS方法来挂载存储。从码头来看,如下所示:

代码语言:javascript
复制
  # create a reusable volume
  $ docker volume create --driver local \
      --opt type=nfs \
      --opt o=nfsvers=4,addr=192.168.1.1,rw \
      --opt device=:/path/to/dir \
      foo

  # or from the docker run command
  $ docker run -it --rm \
    --mount type=volume,dst=/container/path,volume-driver=local,volume-opt=type=nfs,\"volume-opt=o=nfsvers=4,addr=192.168.1.1\",volume-opt=device=:/host/path \
    foo

  # or to create a service
  $ docker service create \
    --mount type=volume,dst=/container/path,volume-driver=local,volume-opt=type=nfs,\"volume-opt=o=nfsvers=4,addr=192.168.1.1\",volume-opt=device=:/host/path \
    foo

  # or inside a docker-compose file
  ...
  volumes:
    nfs-data:
      driver: local
      driver_opts:
        type: nfs
        o: nfsvers=4,addr=192.168.1.1,rw
        device: ":/path/to/dir"
  ...

请注意,只要保持nfs的类型,其中每一个IP地址都可以是主机名。

票数 3
EN

Stack Overflow用户

发布于 2018-04-28 13:19:02

如果您的码头集装箱运行在同一主机,那么这是非常容易的。您只是(在我的示例中作为run的一部分,但可以单独创建)创建一个卷并在两个容器上挂载它。

代码语言:javascript
复制
# Create a volume /data in a new container
$ docker run \
  -v /data \
  -it \
  --name mycontainer \
  ubuntu \
  /bin/bash
root@435cb561e0eb:/# touch /data/test

然后在另一个shell中启动另一个ubuntu容器(不必是ubuntu,可能是另一个映像):

代码语言:javascript
复制
# Mount the same volume in another container
$ docker run \
  --volumes-from mycontainer \
  -it \
  ubuntu \
  /bin/bash
root@de70d474df7a:/# ls /data/
test

然后,您只需确保应用程序的web部分使用该挂载(在本例中为/data)来存储需要在两台主机之间共享的数据。

在多个主机之间。Docker不这样做,但可以在NFS或其他方面的基础上实现这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50076644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档