docker volume
使用 volume 時,docker 會在你的本機上隨機新增一個本地資料夾(Local storage area),大部分會在/var/lib/docker/volumes/底下,然後讓這個資料夾跟 container 裡面的某個資料夾互通。
因為他們是互通的,所以當你 container 裡面那個資料夾有任何變更時,本地的資料夾也會跟著變,而且很重要的一點是:container 被刪掉時那個資料夾資料仍被保留,我們就可以利用這個特性保留容器裡面的資料。
替容器裡面的/data目錄建立相通的永久volume
docker run -it -v /data --name=container1 busybox sh
exit
docker volume ls
DRIVER VOLUME NAME
local 2b44e16bfe8a7417e6ef183e9b9824936a490bff0c4122568437a449f85d52a1
local 283861498c6d94b05dfed40237066e05e955f916ae94e6ac8c5a9070d8dcc058
docker start container1
docker inspect container1


讓 Container 和 Container 之間的資料共享
啟動第二個 Container 指令如下
docker run -it --volumes-from container1 --name=container2 busybox sh

root@kawsing:/# cd /var/lib/docker/volumes/2b44e16bfe8a7417e6ef183e9b9824936a490bff0c4122568437a449f85d52a1/_data/
root@kawsing:/var/lib/docker/volumes/2b44e16bfe8a7417e6ef183e9b9824936a490bff0c4122568437a449f85d52a1/_data# ls
helloworld2.txt helloworld.txt
新增一個named volume
docker volume create --name data
docker volume ls
真實路徑位於/var/lib/docker/volumes/data/_data




再次啟動容器
docker run --name testvolume -v data:/tmp -itd busybox sh


docker volume inspect data
[
{
"CreatedAt": "2019-07-23T00:22:18Z",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/data/_data",
"Name": "data",
"Options": {},
"Scope": "local"
}
]
新增一個 HOST volume
docker volume create data 使用的 volume 稱作 named volume,而現在要介紹另外一種叫做 host volume,用來直接指定某個資料夾跟容器內的資料夾連通
docker run --name hostvolume -v /docker/busybox/tmp:/tmp -itd busybox sh
cd /docker/busybox/tmp
echo "Host volume create" > fromhostvolume.txt

Last updated
Was this helpful?