在docker容器上安装多个卷?

Sel*_*ldo 133 docker

我知道我可以使用类似的东西在我的容器上安装目录

docker run -t -i -v '/on/my/host:/on/the/container' ubuntu /bin/bash
Run Code Online (Sandbox Code Playgroud)

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

Cha*_*ffy 238

传递多个-v参数.

例如:

docker -v /on/my/host/1:/on/the/container/1 \
       -v /on/my/host/2:/on/the/container/2 \
       ...
Run Code Online (Sandbox Code Playgroud)

  • 这应该被标记为答案. (4认同)
  • 目的地必须始终是绝对的.源需要是绝对路径或命名卷的标识符 - 有关后者的文档,请参阅https://docs.docker.com/engine/admin/volumes/volumes/. (3认同)
  • 好的,所以我这样做的方式完全相同,但是当我尝试致电第二个电话时,它说找不到。 (2认同)

小智 8

您可以-vdocker run命令中多次使用option 在容器中挂载多个目录:

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
Run Code Online (Sandbox Code Playgroud)


小智 6

您可以在该卷上具有“只读”或“仅读写”功能

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

docker -v /on/my/host/2:/on/the/container/2:rw \
Run Code Online (Sandbox Code Playgroud)

  • 哪一个是默认选项? (3认同)

Mad*_*ngi 5

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
Run Code Online (Sandbox Code Playgroud)

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

  • 值得补充的是,Docker 建议迁移的唯一原因是因为他们的研究表明 --mount 更易于使用并且有更多选项。使用 -v 或 --mount 都很好,这取决于您的个人喜好和需求。 (3认同)