【问题标题】:multiple volumes to single target directory?多个卷到单个目标目录?
【发布时间】:2018-02-06 07:18:22
【问题描述】:

有没有办法从一个主机挂载多个卷以形成一个目标挂载点?有点像这样:

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 镜像没有提供足够的说明来说明如何使用它们。

【问题讨论】:

  • 没有特定于 docker 的方法来执行此操作。如果你能找到一个通用的 linux 方法来使用 mount 命令执行此操作,那么你可以使用它来使用你自己的挂载标志来挂载卷。
  • 感谢您的确认。如果您作为答案发布,我可以给您适当的信用。

标签: docker unionfs


【解决方案1】:

没有内置的 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 用于传递所有挂载选项,就像在挂载命令上一样。

【讨论】:

  • 这很有帮助。比在主机操作系统中定义挂载点更容易使用 dockerfile 并且更干净
猜你喜欢
  • 2020-03-22
  • 2017-11-11
  • 1970-01-01
  • 1970-01-01
  • 2013-11-02
  • 1970-01-01
  • 1970-01-01
  • 2015-07-09
  • 2019-01-28
相关资源
最近更新 更多