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"
}
]
表明多個資料卷的同時添加已經生效。