?????????個(gè)人主頁:五敷有你? ? ??
???系列專欄:中間件
??穩(wěn)中求進(jìn),曬太陽
1.數(shù)據(jù)卷(容器數(shù)據(jù)管理)
修改nginx的html頁面時(shí),需要進(jìn)入nginx內(nèi)部。并且因?yàn)閮?nèi)部沒有編輯器,修改文件也很麻煩。
這就是因?yàn)槿萜髋c數(shù)據(jù)(容器內(nèi)文件)耦合帶來的后果。要解決這個(gè)問題,必須將數(shù)據(jù)與容器解耦,這就要用到數(shù)據(jù)卷了。
1.1.什么是數(shù)據(jù)卷
數(shù)據(jù)卷(volume)是一個(gè)虛擬目錄,指向宿主機(jī)文件系統(tǒng)中的某個(gè)目錄。
一旦完成數(shù)據(jù)卷掛載,對容器的一切操作都會(huì)作用在數(shù)據(jù)卷對應(yīng)的宿主機(jī)目錄了。
這樣,我們操作宿主機(jī)的/var/lib/docker/volumes/html目錄,就等于操作容器內(nèi)的/usr/share/nginx/html目錄了
1.2.數(shù)據(jù)集操作命令
數(shù)據(jù)卷操作的基本語法如下:
docker volume [COMMAND]
docker volume命令是數(shù)據(jù)卷操作,根據(jù)命令后跟隨的command來確定下一步的操作:
-
create 創(chuàng)建一個(gè)volume
-
inspect 顯示一個(gè)或多個(gè)volume的信息
-
ls 列出所有的volume
-
prune 刪除未使用的volume
-
rm 刪除一個(gè)或多個(gè)指定的volume
1.3.創(chuàng)建和查看數(shù)據(jù)卷
需求:創(chuàng)建一個(gè)數(shù)據(jù)卷,并查看數(shù)據(jù)卷在宿主機(jī)的目錄位置
① 創(chuàng)建數(shù)據(jù)卷
docker volume create html
② 查看所有數(shù)據(jù)
docker volume ls
結(jié)果:
③ 查看數(shù)據(jù)卷詳細(xì)信息卷
docker volume inspect html
結(jié)果:
可以看到,我們創(chuàng)建的html這個(gè)數(shù)據(jù)卷關(guān)聯(lián)的宿主機(jī)目錄為/var/lib/docker/volumes/html/_data
目錄。
小結(jié):
數(shù)據(jù)卷的作用:
-
將容器與數(shù)據(jù)分離,解耦合,方便操作容器內(nèi)數(shù)據(jù),保證數(shù)據(jù)安全
數(shù)據(jù)卷操作:
-
docker volume create:創(chuàng)建數(shù)據(jù)卷
-
docker volume ls:查看所有數(shù)據(jù)卷
-
docker volume inspect:查看數(shù)據(jù)卷詳細(xì)信息,包括關(guān)聯(lián)的宿主機(jī)目錄位置
-
docker volume rm:刪除指定數(shù)據(jù)卷
-
docker volume prune:刪除所有未使用的數(shù)據(jù)卷
1.4.掛載數(shù)據(jù)卷
我們在創(chuàng)建容器時(shí),可以通過 -v 參數(shù)來掛載一個(gè)數(shù)據(jù)卷到某個(gè)容器內(nèi)目錄,命令格式如下:
docker run \
?--name mn \
?-v html:/root/html \
?-p 8080:80
nginx \
這里的-v就是掛載數(shù)據(jù)卷的命令:
-
-v html:/root/htm
:把html數(shù)據(jù)卷掛載到容器內(nèi)的/root/html這個(gè)目錄中
1.5.案例-給nginx掛載數(shù)據(jù)卷
需求:創(chuàng)建一個(gè)nginx容器,修改容器內(nèi)的html目錄內(nèi)的index.html內(nèi)容
分析:上個(gè)案例中,我們進(jìn)入nginx容器內(nèi)部,已經(jīng)知道nginx的html目錄所在位置/usr/share/nginx/html ,我們需要把這個(gè)目錄掛載到html這個(gè)數(shù)據(jù)卷上,方便操作其中的內(nèi)容。
提示:運(yùn)行容器時(shí)使用 -v 參數(shù)掛載數(shù)據(jù)卷
步驟:
① 創(chuàng)建容器并掛載數(shù)據(jù)卷到容器內(nèi)的HTML目錄
docker run --name mn -v html:/usr/share/nginx/html -p 80:80 -d nginx
② 進(jìn)入html數(shù)據(jù)卷所在位置,并修改HTML內(nèi)容
# 查看html數(shù)據(jù)卷的位置
docker volume inspect html
# 進(jìn)入該目錄
cd /var/lib/docker/volumes/html/_data
# 修改文件
vi index.html
1.6.案例-給MySQL掛載本地目錄
容器不僅僅可以掛載數(shù)據(jù)卷,也可以直接掛載到宿主機(jī)目錄上。關(guān)聯(lián)關(guān)系如下:
-
帶數(shù)據(jù)卷模式:宿主機(jī)目錄 --> 數(shù)據(jù)卷 ---> 容器內(nèi)目錄
-
直接掛載模式:宿主機(jī)目錄 ---> 容器內(nèi)目錄
如圖:
語法:
目錄掛載與數(shù)據(jù)卷掛載的語法是類似的:
-
-v [宿主機(jī)目錄]:[容器內(nèi)目錄]
-
-v [宿主機(jī)文件]:[容器內(nèi)文件]
需求:創(chuàng)建并運(yùn)行一個(gè)MySQL容器,將宿主機(jī)目錄直接掛載到容器
實(shí)現(xiàn)思路如下:
1)在將課前資料中的mysql.tar文件上傳到虛擬機(jī),通過load命令加載為鏡像
2)創(chuàng)建目錄/tmp/mysql/data
3)創(chuàng)建目錄/tmp/mysql/conf,將課前資料提供的hmy.cnf文件上傳到/tmp/mysql/conf
4)去DockerHub查閱資料,創(chuàng)建并運(yùn)行MySQL容器,要求:
① 掛載/tmp/mysql/data到mysql容器內(nèi)數(shù)據(jù)存儲(chǔ)目錄
② 掛載/tmp/mysql/conf/hmy.cnf到mysql容器的配置文件
③ 設(shè)置MySQL密碼
1.7.小結(jié)
docker run的命令中通過 -v 參數(shù)掛載文件或目錄到容器中:
-
-v volume名稱:容器內(nèi)目錄
-
-v 宿主機(jī)文件:容器內(nèi)文
-
-v 宿主機(jī)目錄:容器內(nèi)目錄
數(shù)據(jù)卷掛載與目錄直接掛載的
-
數(shù)據(jù)卷掛載耦合度低,由docker來管理目錄,但是目錄較深,不好找文章來源:http://www.zghlxwxcb.cn/news/detail-843660.html
-
目錄掛載耦合度高,需要我們自己管理目錄,不過目錄容易尋找查看文章來源地址http://www.zghlxwxcb.cn/news/detail-843660.html
到了這里,關(guān)于【中間件】docker數(shù)據(jù)卷的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!