Docker資料管理
概述
在容器中管理資料主要有兩種方式:
- 資料卷(Volumes)
- 挂載主機目錄 (Bind mounts)
資料卷
資料卷是一個可供一個或多個容器使用的特殊目錄,可以在容器之間共享和重用,預設會一直存在,即使容器被删除。
資料卷操作
第一步:建立資料卷,例如:
docker volume create container-vol
第二步:檢視所有資料卷,例如:
docker volume ls
檢視指定 資料卷 的資訊
docker volume inspect container-vol
查詢的結果:
[
{
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/container-vol/_data",
"Name": "container-vol",
"Options": {},
"Scope": "local"
}
]
第三步:啟動挂載資料卷的容器,例如:
docker run -it --mount source=container-vol,target=/root centos:7 bash
或者采用如下簡寫方式
docker run -it -v container-vol:/root centos:7 bash
-v container-vol:/root 把資料卷 container-vol 挂載到容器的 /root 目錄
第四步:删除資料卷(如果資料卷被容器使用則無法删除),例如
doker volume rm container-vol
清理無主資料卷
docker volume prune
挂載主機目錄
我們還可以在啟動容器時,以目錄直接挂載的方式進行資料操作,例如:
docker run -it -v /usr/app:/opt/app centos:7 bash
其中:
- /usr/app:為主控端目錄
- /opt/app: 為啟動容器的一個目錄
- -v 用于指定挂載目錄,如果本地目錄(主控端目錄)不存在, Docker 會自動為你按照挂載目錄進行目錄的建立。
例如:

檢視挂載目錄資訊
docker inspect 91a #91a 為容器id
顯示結果:
...
"Mounts": [
{
"Type": "bind",
"Source": "/usr/app",
"Destination": "/opt/app",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
...