我有几个需要状态的容器 - 我只会将scale设置为1,但是我希望它可以让它们在卷上启动的主机将被共享。Docker 1.12群模式和容器卷
我猜我需要使用网络安装来实现这一点(这很好),但我怎样才能使用docker swarm 1.12配置音量?
我知道我可以使用码头卷创建,我想我可能需要指定一个驱动程序,但我努力找到一个这样的例子!
我有几个需要状态的容器 - 我只会将scale设置为1,但是我希望它可以让它们在卷上启动的主机将被共享。Docker 1.12群模式和容器卷
我猜我需要使用网络安装来实现这一点(这很好),但我怎样才能使用docker swarm 1.12配置音量?
我知道我可以使用码头卷创建,我想我可能需要指定一个驱动程序,但我努力找到一个这样的例子!
docker service create --mount ...
为持久数据提供了两个选项;绑定挂载和命名卷。绑定挂载持续存在于创建的主机上,因此无法共享,因此无法为您工作。
命名卷可以使用docker volume create
创建,或者使用--mount选项隐式创建为docker service create
的一部分,例如,
$ 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选项。官方文档仍然没有在Docker网站上。但是,您可以获取有关绑定安装和命名卷here的更多信息。
我不确定这个github pull request 24334显示的语法已经定稿,但您要查找的cli选项是docker service --mount ...
。当使用这样的东西时,你会创建一种需要确保数据可用于安装的情况,所以你需要查看像nfs或gluster这样的驱动程序。否则,如果容器需要移动,并且已经直接从主机上挂载数据,那么它将在没有必要的挂载的情况下重新启动。
编辑:当前--mount
语法是:
为主机/绑定安装或
docker service create --name nginx \
--mount type=volume,source=web,target=/usr/share/nginx/html \
-p 80:80 nginx
名为卷装入。关于这个话题,我还发布了一个blog post,因为我听到很多同样的问题。
我正在使用rc4,并在/ mnt/docker/jackett上安装了一个网络共享。这应该工作吗? 'docker service create --mount bind,src =/mnt/docker/jackett,dst =/config/.config -p 9117:9117 --name files_jackett dreamcat4/jackett'。 我得到的错误是--mount:invalid field'bind'必须是一个key = value对。 –
看起来语法应该是:'docker service create --mount type = bind,source =/mnt/docker/jackett,target =/config/.config -p 9117:9117 --name files_jackett dreamcat4/jackettclear'!谢谢 –