天天看點

Docker添加多個資料卷的方法

1. 單個添加

以官方centos鏡像為例,Docker 添加資料卷(Data Volumes)的基本指令為:

[root@CentOS ~]# docker run -it -P --name volume_test -v /host_folder:/container_folder/inner_folder centos /bin/bash
           
其中,

/host_folder

為主控端的檔案夾,需要提前

mkdir

建好;

/container_folder/inner_folder

為容器内檔案夾,運作指令後會自動建立,注意其是可以遞歸建立的;

另外主控端的檔案可以省略,其預設路徑在

/var/lib/docker/volume

下, 可以用

docker inspect 容器

指令檢視具體路徑,但由于其生成的檔案夾名是随機的,不友善差別和使用,是以一般情況下不建議省略主控端檔案。

2.多個添加

同時添加多個資料卷的方式也簡單粗暴,即添加多個

-v

即可:

[root@CentOS ~]# docker run -it -P --name volume_test -v /host_folder_1:/container_folder_1 \ 
-v /host_folder_2:/container_folder_2:ro \
-v /host_file:/container_file centos /bin/bash
           

每個資料卷互不影響,可以為不同的權限,不同格式,利用檔案資料卷的方式還可以輕松同步容器裡的

.bash_history

等記錄型檔案。

主控端器執行

inspect

指令:

[root@CentOS ~]# docker inspect volume_test
           

可以在Json串中的

Mounts

以及

HostConfig

下的

Binds

看到相應的資料卷資訊:

"HostConfig": {
            "Binds": [
                "/host_folder_1:/container_folder_1",
                "/host_folder_2:/container_folder_2:ro",
                "/host_file:/container_file"
            ],
            ...
            }
           
"Mounts": [
            {
                "Type": "bind",
                "Source": "/host_folder_1",
                "Destination": "/container_folder_1",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/host_folder_2",
                "Destination": "/container_folder_2",
                "Mode": "ro",
                "RW": false,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/host_file",
                "Destination": "/container_file",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ]
           

表明多個資料卷的同時添加已經生效。