Docker 还没有内置的基于软件的解决方案来跨多台机器共享卷。 infinit 上有工作,但他们还没有发布任何用于生产用途的内容。
您可以使用第三方存储解决方案。如果您使用的是云提供商,那么他们的解决方案通常最适合您的用例。对于自托管软件解决方案,您可以使用 glusterfs 之类的东西。自己处理数据复制的应用程序是容器的想法,例如蟑螂数据库。
典型的自托管解决方案是使用 NFS。即使是云提供商,我通常也会使用他们的 NFS 方法来挂载存储。从 docker 来看,如下所示:
# 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 地址都可以是主机名。