??數(shù)據(jù)卷(容器數(shù)據(jù)管理)
- 在之前的nginx案例中,修改nginx的html頁面時,需要進入nginx內部。并且因為沒有編輯器,修改文件也很麻煩。
- 這就是因為容器與數(shù)據(jù)(容器內文件)耦合帶來的后果。
![]()
- 要解決這個問題,必須將數(shù)據(jù)與容器解耦,這就要用到數(shù)據(jù)卷了。
?什么是數(shù)據(jù)卷
數(shù)據(jù)卷(volume)
是一個虛擬目錄,指向宿主機文件系統(tǒng)中的某個目錄。![]()
- 一旦完成數(shù)據(jù)卷掛載,對容器的一切操作都會作用在數(shù)據(jù)卷對應的宿主機目錄了。
這樣,我們操作宿主機的/var/lib/docker/volumes/html目錄,就等于操作容器內的/usr/share/nginx/html目錄了
?數(shù)據(jù)集操作命令
數(shù)據(jù)卷操作的基本語法如下:
docker volume [COMMAND]
docker volume命令是數(shù)據(jù)卷操作,根據(jù)命令后跟隨的command來確定下一步的操作:
- create 創(chuàng)建一個volume
- inspect 顯示一個或多個volume的信息
- ls 列出所有的volume
- prune 刪除未使用的volume
- rm 刪除一個或多個指定的volume
?創(chuàng)建和查看數(shù)據(jù)卷
- 需求:創(chuàng)建一個數(shù)據(jù)卷,并查看數(shù)據(jù)卷在宿主機的目錄位置
① 創(chuàng)建數(shù)據(jù)卷docker volume create html
② 查看所有數(shù)據(jù)docker volume ls
- 結果
③ 查看數(shù)據(jù)卷詳細信息卷docker volume inspect html
- 結果:
![]()
- 可以看到,我們創(chuàng)建的html這個數(shù)據(jù)卷關聯(lián)的宿主機目錄為
/var/lib/docker/volumes/html/_data
目錄。
- 小結:
- 數(shù)據(jù)卷的作用:
- 將容器與數(shù)據(jù)分離,解耦合,方便操作容器內數(shù)據(jù),保證數(shù)據(jù)安全
- 數(shù)據(jù)卷操作:
docker volume create
:創(chuàng)建數(shù)據(jù)卷docker volume ls
:查看所有數(shù)據(jù)卷docker volume inspect
:查看數(shù)據(jù)卷詳細信息,包括關聯(lián)的宿主機目錄位置docker volume rm
:刪除指定數(shù)據(jù)卷docker volume prune
:刪除所有未使用的數(shù)據(jù)卷
?掛載數(shù)據(jù)卷
我們在創(chuàng)建容器時,可以通過 -v 參數(shù)來掛載一個數(shù)據(jù)卷到某個容器內目錄,命令格式如下:
docker run \
--name mn \
-v html:/root/html \
-p 8080:80
nginx \
- 這里的-v就是掛載數(shù)據(jù)卷的命令:
-v html:/root/htm
:把html數(shù)據(jù)卷掛載到容器內的/root/html這個目錄中
?案例
??案例-給nginx掛載數(shù)據(jù)卷
- 需求:創(chuàng)建一個nginx容器,修改容器內的html目錄內的index.html內容
- 分析:上個案例中,我們進入nginx容器內部,已經知道nginx的html目錄所在位置/usr/share/nginx/html ,我們需要把這個目錄掛載到html這個數(shù)據(jù)卷上,方便操作其中的內容。
- 提示:運行容器時使用 -v 參數(shù)掛載數(shù)據(jù)卷
步驟:
① 創(chuàng)建容器并掛載數(shù)據(jù)卷到容器內的HTML目錄文章來源:http://www.zghlxwxcb.cn/news/detail-618583.html
docker run --name mn -v html:/usr/share/nginx/html -p 80:80 -d nginx
② 進入html數(shù)據(jù)卷所在位置,并修改HTML內容文章來源地址http://www.zghlxwxcb.cn/news/detail-618583.html
# 查看html數(shù)據(jù)卷的位置
docker volume inspect html
# 進入該目錄
cd /var/lib/docker/volumes/html/_data
# 修改文件
vi index.html
??案例-給MySQL掛載本地目錄
- 容器不僅僅可以掛載數(shù)據(jù)卷,也可以直接掛載到宿主機目錄上。關聯(lián)關系如下:
- 帶數(shù)據(jù)卷模式:宿主機目錄 --> 數(shù)據(jù)卷 —> 容器內目錄
- 直接掛載模式:宿主機目錄 —> 容器內目錄
- 如圖:
![]()
- 語法:
- 目錄掛載與數(shù)據(jù)卷掛載的語法是類似的:
- -v [宿主機目錄]:[容器內目錄]
- -v [宿主機文件]:[容器內文件]
??總結
- docker run的命令中通過 -v 參數(shù)掛載文件或目錄到容器中:
- -v volume名稱:容器內目錄
- -v 宿主機文件:容器內文
- -v 宿主機目錄:容器內目錄
- 數(shù)據(jù)卷掛載與目錄直接掛載的
- 數(shù)據(jù)卷掛載耦合度低,由docker來管理目錄,但是目錄較深,不好找
- 目錄掛載耦合度高,需要我們自己管理目錄,不過目錄容易尋找查看
到了這里,關于docker配置文件掛載(容器數(shù)據(jù)管理)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!