之前使用掛載目錄掛載docker內(nèi)的配置文件的時(shí)候,發(fā)現(xiàn)本地的目錄為空,想到用容器卷來(lái)解決,解決完以后一些操作會(huì)方便很多
數(shù)據(jù)卷和掛載目錄的區(qū)別
卷 (Docker Volume) 是受控存儲(chǔ),是由 Docker 引擎進(jìn)行管理維護(hù)的。因此使用卷,你可以不必處理 uid、SELinux 等各種權(quán)限問(wèn)題,Docker 引擎在建立卷時(shí)會(huì)自動(dòng)添加安全規(guī)則,以及根據(jù)掛載點(diǎn)調(diào)整權(quán)限。并且可以統(tǒng)一列表、添加、刪除。
而掛載目錄而掛載目錄那就沒(méi)人管了,屬于用戶(hù)自行維護(hù)。你就必須手動(dòng)處理所有權(quán)限問(wèn)題。(不過(guò)可以通過(guò)添加–privileged=true解決)
數(shù)據(jù)卷 是一個(gè)可供一個(gè)或多個(gè)容器使用的特殊目錄,它繞過(guò) UFS,可以提供很多有用的特性:
- 數(shù)據(jù)卷 可以在容器之間共享和重用
- 對(duì) 數(shù)據(jù)卷 的修改會(huì)立馬生效
- 對(duì) 數(shù)據(jù)卷 的更新,不會(huì)影響鏡像
- 數(shù)據(jù)卷 默認(rèn)會(huì)一直存在,即使容器被刪除
注意:數(shù)據(jù)卷 的使用,類(lèi)似于 Linux 下對(duì)目錄或文件進(jìn)行 mount,鏡像中的被指定為掛載點(diǎn)的目錄中的文件會(huì)復(fù)制到數(shù)據(jù)卷中
(僅數(shù)據(jù)卷為空時(shí)會(huì)復(fù)制)。
這就是原本的目的
$ docker volume create nginx-vol
默認(rèn)創(chuàng)建在以下目錄/var/lib/docker/volumes/nginx-vol/_data
啟動(dòng)一個(gè)掛載數(shù)據(jù)卷的容器
在用docker run
命令的時(shí)候,使用 --mount
標(biāo)記來(lái)將 數(shù)據(jù)卷 掛載到容器里。在一次 docker run
中可以?huà)燧d多個(gè) 數(shù)據(jù)卷。
下面創(chuàng)建一個(gè)名為 web
的容器,并加載一個(gè) 數(shù)據(jù)卷 到容器的 /etc/nginx/
目錄。
$ docker run -p 8002:8002 -d
--mount source=nginx-vol,target=/etc/nginx/
--name nginx02 nginx
也可以使用-v
完成掛載
$ docker run -p 8002:8002 -d
-v nginx-vol:/etc/nginx/
--name nginx02 nginx
完成以后如果忘記了路徑可以使用以下命令查看卷的信息docker inspect 容器id
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-446272.html
"Mounts": [
{
"Type": "volume",
"Name": "nginx-vol",
# 這里
"Source": "/var/lib/docker/volumes/nginx-vol/_data",
# 和這里
"Destination": "/etc/nginx",
"Driver": "local",
"Mode": "z",
"RW": true,
"Propagation": ""
}
其他容器卷常用命令$ docker volume rm volume_name
有的卷占用空間很大,如果想要清理卷可以使用$ docker volume prune
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-446272.html
到了這里,關(guān)于使用docker數(shù)據(jù)卷解決掛載目錄的時(shí)候文件消失不見(jiàn)的問(wèn)題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!