没有内置的 docker 方法可以为卷执行此操作,它们通常是本地卷的绑定挂载。unionfs 挂载用于创建容器的镜像层,但卷完全在此之外运行,并挂载在 unionfs 之上,拦截对该目录的所有文件系统请求。
如果您使用 linux 挂载创建解决方案来执行此操作,则可以在 docker 中使用相同的 linux 挂载选项定义卷挂载。例如,在 docker 中进行 NFS 挂载的方法如下:
# For a reusable volume
$ docker volume create --driver local \
--opt type=nfs \
--opt o=addr=192.168.1.1,rw \
--opt device=:/path/to/dir \
foo
# For a local container with docker run
$ docker run -it --rm \
--mount type=volume,dst=/container/path,volume-driver=local,volume-opt=type=nfs,volume-opt=o=addr=192.168.1.1,volume-opt=device=:/host/path \
foo
# For a swarm mode service
$ docker service create \
--mount type=volume,dst=/container/path,volume-driver=local,volume-opt=type=nfs,volume-opt=o=addr=192.168.1.1,volume-opt=device=:/host/path \
foo
请注意,在所有这些示例中,volume-driver 都是本地的,volume-opt 用于传递所有挂载选项,就像在挂载命令上一样。