218

我知道我可以使用类似的东西在我的容器上的主机中挂载一个目录

docker run -t -i -v '/on/my/host:/on/the/container' ubuntu /bin/bash

有没有办法创建多个主机-容器对?例如逗号分隔的列表,或传入一个数组?

4

6 回答 6

338

传递多个-v参数。

例如:

docker -v /on/my/host/1:/on/the/container/1 \
       -v /on/my/host/2:/on/the/container/2 \
       ...
于 2013-09-18T00:11:18.393 回答
50

Docker 现在建议迁移到使用--mount.

当前的 Docker 文档中也详细解释了多个卷挂载。

来自:https ://docs.docker.com/storage/bind-mounts/

$ docker run -d \
  -it \
  --name devtest \
  --mount type=bind,source="$(pwd)"/target,target=/app \
  --mount type=bind,source="$(pwd)"/target,target=/app2,readonly,bind-propagation=rslave \
  nginx:latest

原来的旧答案应该仍然有效;只是试图使答案与当前最知名的方法保持一致。

于 2019-07-19T16:26:49.137 回答
32

您可以在命令中-v多次使用选项在容器中挂载多个目录:docker run

docker run -t -i \
  -v '/on/my/host/test1:/on/the/container/test1' \
  -v '/on/my/host/test2:/on/the/container/test2' \
  ubuntu /bin/bash
于 2019-01-18T09:08:16.977 回答
9

您可以在卷上设置只读或只读和只写

docker -v /on/my/host/1:/on/the/container/1:ro \

docker -v /on/my/host/2:/on/the/container/2:rw \
于 2018-05-08T18:13:43.627 回答
1

在 Windows 上:如果必须挂载两个目录 E:\data\dev & E:\data\dev2

利用:

docker run -v E:\data\dev:c:/downloads -v E:\data\dev2 c:/downloads2 -i --publish 1111:80 -P SomeBuiltContainerName:SomeLabel
于 2020-12-26T19:18:17.650 回答
-11

或者你可以做

docker run -v /var/volume1 -v /var/volume2 DATA busybox true
于 2014-03-26T22:08:35.417 回答