今天給大家聊聊Docker具名、匿名掛載的相關知識,一起來學學吧!
- 匿名掛載
1.1 含義
匿名掛載就是指定容器內路徑,dockers run 每掛載一個目錄就會宿主主機自動創建一個隨機字符串的目錄。目錄/var/lib/docker/volumes/隨機字符串。
注意:里面的_data目錄和對應容器內目錄進行同步
1.2 匿名掛載示例
運行容器
docker run -d -p 8000:80 --name Nginxtest -v /etc/nginx nginx
查看nginxtest容器目錄掛載情況
docker inspect --format="{{json .Mounts}}" 7880ad6076b1
查看掛載內容如下:
[
{
"Type":"volume"undefined
"Name":"6d05e4012610c5427b589f38009ade0d90bd5009896d251f545979ddb736e1b8"undefined "Source":"/var/lib/docker/volumes/6d05e4012610c5427b589f38009ade0d90bd5009896d251f545979ddb736e1b8/_data"undefined
"Destination":"/etc/nginx"undefined
"Driver":"local"undefined
"Mode":""undefined
"RW":trueundefined
"Propagation":""
}
]
返回參數說明:
- 容器內路徑:Destination:/var/lib/docker/volumes/6d05e4012610c5427b589f38009ade0d90bd5009896d251f545979ddb736e1b8/_data
- 宿主主機路徑:Source:/etc/nginx
1.3 文件同步測試
宿主主機測試命令
#進入掛載目錄,創建 1.txt 文件
cd /var/lib/docker/volumes/6d05e4012610c5427b589f38009ade0d90bd5009896d251f545979ddb736e1b8/_data
touch 1.txt
容器內部測試命令
docker exec -it nginxtest /bin/bash
cd /etc/nginx
touch 22.txt
宿主主機
容器內部
- 具名掛載
2.1 含義
具名掛載就是掛載的同時指定一個有具體含義的名字,方便后續和容器對應以及后續的運維,便于查找掛載目錄。
2.2 具名掛載示例
#運行容器
docker run -d -p 8001:80 --name nginxtest02 -v nginxtest02:/etc/nginx nginx
#查看容器掛載目錄
docker inspect --format="{{json .Mounts}}" 4cd1e3241698
查看容器掛載內容
[
{
"Type":"volume"undefined
"Name":"nginxtest02"undefined
"Source":"/var/lib/docker/volumes/nginxtest02/_data"undefined
"Destination":"/etc/nginx"undefined
"Driver":"local"undefined
"Mode":"z"undefined
"RW":trueundefined
"Propagation":""
}
]
返回參數說明:
容器內路徑:Destination:/etc/nginx
宿主主機路徑:Source:/var/lib/docker/volumes/nginxtest02/_data
具體的文件同步和匿名掛載一樣,大家可以自己測試。
- 查看掛載數據卷命令
docker volume ls
4、總結
宿主主機掛載目錄對應同步的文件在_data 目錄里面。雙向實時同步。
指定具體的掛載目錄名,便于查找和管理,如果你的容器比較多,都是不可讀的字符串,那么可維護性會比較差,建議采用具名掛載。