docker掛載
阿新 • • 發佈:2019-01-10
docker儲存
資料卷(volume)
資料卷是一種特殊的目錄,可以被多個容器使用
建立資料卷
docker volume create 卷名
例如:
MacBook-Pro:~$ docker volume create vol-test
vol-test
檢視卷列表
MacBook-Pro:~$ docker volume ls
DRIVER VOLUME NAME
local 79c713d89302dbf967318be3eb3a91c27962b5c3f45f7440763d2e08da1f3b75
local 92aadfaf31f7895a46669e2553f4884ae866e33d317a6ef0501df8ede92e221e
local 9e4bb84c385cee9551a5568a7a739aa68e6cbd87e1baaee742d3220d75616185
local vol-test
檢視卷
上述例子中已經使用過就是docker volume ls
MacBook-Pro:~$ docker volume ls
DRIVER VOLUME NAME
local 79 c713d89302dbf967318be3eb3a91c27962b5c3f45f7440763d2e08da1f3b75
local 92aadfaf31f7895a46669e2553f4884ae866e33d317a6ef0501df8ede92e221e
local 9e4bb84c385cee9551a5568a7a739aa68e6cbd87e1baaee742d3220d75616185
local vol-test
檢查卷資訊
docker volume inspect 卷名
MacBook-Pro :~$ docker volume inspect vol-test
[
{
"CreatedAt": "2018-06-24T04:46:03Z",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/vol-test/_data",
"Name": "vol-test",
"Options": {},
"Scope": "local"
}
]
掛載資料卷
docker run --name 容器名 -it --mount source=卷名,target=容器內絕對路徑(掛載點) 映象名 bash
或者
docker run --name 容器名 -it -v 卷名:容器內絕對路徑(掛載點) 映象名 bash
掛載就是用–mount引數 source是資料卷,target是容器內檔案系統掛載點,
還可以使用-v引數 -v 卷名:容器內絕對路徑
例如:
啟動兩個容器,掛載同一個資料卷共享資料
新建容器m1,並建立檔案,內容為aaa
MacBook-Pro:~$ docker run --name m1 -it --mount source=vol-test,target=/root ubuntu bash
root@db69531209b9:/# cd root/
root@db69531209b9:~# echo "aaa" > aaa.txt
root@db69531209b9:~# ls
aaa.txt
啟動容器m2,檢視檔案和內容
fengbindeMacBook-Pro:~$ docker run --name m2 -it --mount source=vol-test,target=/root ubuntu bash
fengbindeMacBook-Pro:~ fengbinshi$ docker run --name m2 -it --mount source=vol-test,target=/root ubuntu bash
[email protected]:/# cd root/
[email protected]:~# ls
aaa.txt
[email protected]:~# cat aaa.txt
aaa
可以看到,資料在m1中建立,m2中也可以讀取
資料卷刪除
docker volume rm 卷名
來刪除指定資料卷
docker volume prune
來刪除無主的資料卷
MacBook-Pro:~$ docker volume rm vol-test
vol-test
MacBook-Pro:~$ docker volume prune
WARNING! This will remove all local volumes not used by at least one container.
Are you sure you want to continue? [y/N] y
Deleted Volumes:
9e4bb84c385cee9551a5568a7a739aa68e6cbd87e1baaee742d3220d75616185
79c713d89302dbf967318be3eb3a91c27962b5c3f45f7440763d2e08da1f3b75
92aadfaf31f7895a46669e2553f4884ae866e33d317a6ef0501df8ede92e221e
Total reclaimed space: 0B
目錄掛載
docker run -it -v 宿主機目錄:容器目錄 映象名 命令
或者
docker run -it --mount type=bind,source=宿主目錄,target=容器目錄[,readonly] 映象 命令
在建立容器後我在本地目錄下建立檔案,並在容器內檢視
MacBook-Pro:Desktop$ docker run -it -v /Users/home/Desktop/dockerTest/:/root ubuntu bash
root@d3e4a2ca07ab:/# cd root
root@d3e4a2ca07ab:~# ls
bbb.txt
root@d3e4a2ca07ab:~# cat bbb.txt
bbb
掛載主機檔案
命令同目錄掛載,只不過把路徑換為檔案
MacBook-Pro:Desktop fengbinshi$ docker run -it -v $HOME/Desktop/dockerTest/bbb.txt:/root/a.txt ubuntu bash
root@14484f34d384:/# cd root/
root@14484f34d384:~# ls
a.txt
root@14484f34d384:~# cat a.txt
bbb