Docker 1.12群集模式和容器卷

问题描述 投票:11回答:2

我有几个需要状态的容器 - 我只会将比例设置为1,但我希望这样,无论他们在卷上启动哪个主机都会被共享。

我猜我需要使用网络安装来实现这一点(这很好),但我怎么用docker swarm 1.12配置音量呢?

我知道我可以使用docker volume create,我想我可能需要指定一个驱动程序,但我很难找到一个这样的例子!

docker volume docker-swarm
2个回答
12
投票

docker service create --mount ...为持久数据提供了两种选择;绑定挂载和命名卷。绑定挂载在创建的主机上持久存在,因此不能共享,因为不可共享。

命名卷可以使用docker volume create创建,也可以隐式创建,作为docker service createusing --mount选项的一部分,例如

$ docker volume create -d --driver cio --name cassandradb --opt profile=CASSANDRA
$ docker service create \
--mount source=cassandradb,target=/var/lib/cassandra,volume-driver=cio \
--replicas 1 \
--name cassandra \
cassandra

docker service create默认为命名卷,因此示例中未指定类型。卷驱动程序支持便携式卷。其他卷驱动程序(如RexRay或Flocker)也支持便携式卷。这是一篇关于RexRay的例子。

还有用于卷标和卷选项的--mount选项。你可以在bind mountsnamed volumes上获取更多信息。

使用存储卷驱动程序的其他qazxsw poi。


8
投票

我不确定语法是否在example显示的最终确定,但你正在寻找的cli选项是github pull request 24334。当使用这样的东西时,你会创建一个需要确保数据可用于安装的情况,因此你正在查看像nfs或gluster这样的驱动程序。否则,如果容器需要移动并且您已直接从主机装入数据,则会在没有所需装载的情况下重新启动。


编辑:当前的docker service --mount ...语法是:

--mount

用于主机/绑定挂载或

docker service create --name nginx \
  --mount type=bind,source=`pwd`/static-site,target=/usr/share/nginx/html \
  -p 80:80 nginx

对于命名的卷安装。我还在这个主题上发布了一个docker service create --name nginx \ --mount type=volume,source=web,target=/usr/share/nginx/html \ -p 80:80 nginx ,因为我经常听到同样的问题。

© www.soinside.com 2019 - 2024. All rights reserved.