我知道我可以使用类似于

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

是否有一种方法可以创建多个主机-容器对?例如,一个逗号分隔的列表,或传递在一个数组?


当前回答

我看到一条评论问默认选项是读写还是只读;“读写”是默认选项。(因为我没有足够的代表来评论,所以发表了一篇文章)

根据docker文档,运行以下命令:

docker run -d \
--name devtest \
--mount source=myvol2,target=/app \
nginx:latest

然后使用docker inspect devtest并在输出的“Mounts”部分找到“RW”选项:

"Mounts": [
    {
        "Type": "volume",
        "Source": "/var/lib/docker/volumes/myvol2/_data",
        "Destination": "/app",
        "Driver": "local",
        "Mode": "",
        "RW": true,
        "Propagation": ""
    }
],

让我们看看默认选项让卷既可读又可写。


要将卷设置为只读(同样是根据官方文档),请在源标记和目标标记后添加readonly:

docker run -d \
--name=nginxtest \
--mount source=nginx-vol,destination=/usr/share/nginx/html,readonly \
nginx:latest

运行docker inspect nginxtest,找到“Mounts”:

"Mounts": [
    {
        "Type": "volume",
        "Source": "/var/lib/docker/volumes/nginx-vol/_data",
        "Destination": "/usr/share/nginx/html",
        "Driver": "local",
        "Mode": "",
        "RW": false,
        "Propagation": ""
    }
],

(注:我不知道为什么官方文档会在目标标记和目标标记之间交换,但我是在假设它们可以互换使用的前提下工作的。)

其他回答

我看到一条评论问默认选项是读写还是只读;“读写”是默认选项。(因为我没有足够的代表来评论,所以发表了一篇文章)

根据docker文档,运行以下命令:

docker run -d \
--name devtest \
--mount source=myvol2,target=/app \
nginx:latest

然后使用docker inspect devtest并在输出的“Mounts”部分找到“RW”选项:

"Mounts": [
    {
        "Type": "volume",
        "Source": "/var/lib/docker/volumes/myvol2/_data",
        "Destination": "/app",
        "Driver": "local",
        "Mode": "",
        "RW": true,
        "Propagation": ""
    }
],

让我们看看默认选项让卷既可读又可写。


要将卷设置为只读(同样是根据官方文档),请在源标记和目标标记后添加readonly:

docker run -d \
--name=nginxtest \
--mount source=nginx-vol,destination=/usr/share/nginx/html,readonly \
nginx:latest

运行docker inspect nginxtest,找到“Mounts”:

"Mounts": [
    {
        "Type": "volume",
        "Source": "/var/lib/docker/volumes/nginx-vol/_data",
        "Destination": "/usr/share/nginx/html",
        "Driver": "local",
        "Mode": "",
        "RW": false,
        "Propagation": ""
    }
],

(注:我不知道为什么官方文档会在目标标记和目标标记之间交换,但我是在假设它们可以互换使用的前提下工作的。)

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

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

卷可以设置为“只读”或“只读”

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

docker -v /on/my/host/2:/on/the/container/2:rw \

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

Use:

docker run -v E:\data\dev:c:/downloads -v E:\data\dev2 c:/downloads2 -i --publish 1111:80 -P SomeBuiltContainerName:SomeLabel

对于一个可运行的例子:

docker run -v /Users/brandomiranda/iit-term-synthesis:/home/bot/iit-term-synthesis \
           -v /Users/brandomiranda/pycoq:/home/bot/pycoq \
           -v /Users/brandomiranda/ultimate-utils:/home/bot/ultimate-utils \
           -ti brandojazz/iit-term-synthesis:test bash

但首先要:

docker pull brandojazz/iit-term-synthesis:test