有没有办法从主机挂载多个卷以形成单个目标挂载点?有点像这样:
docker run --name ubuntu_bash \
--rm --interactive --tty \
--volume=/media/Large/videos:/videos \
--volume=/media/Small/videos:/videos \
ubuntu find /videos
我猜这个答案是否定的,但是在Docker的背景下,“叠加”具有如此多的含义,在网络上搜索它有点困难。
如果没有,是否有可能有用的Docker Store映像?不幸的是,许多Docker镜像没有提供有关如何使用它们的充分说明。
答案 0 :(得分:7)
没有内置的docker方法可以为卷执行此操作,它们通常是本地卷的绑定装入。 unionfs挂载用于创建容器的图像层,但卷完全在此之外,并挂在unionfs之上,拦截对该目录的所有文件系统请求。
如果使用linux mount创建解决方案,则可以使用相同的linux挂载选项在docker中定义卷挂载。例如,在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-opt用于传递所有挂载选项,就像在mount命令上一样。