久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Docker中數(shù)據(jù)卷怎么用

共計(jì) 2477 個(gè)字符,預(yù)計(jì)需要花費(fèi) 7 分鐘才能閱讀完成。

這篇文章主要介紹 Docker 中數(shù)據(jù)卷怎么用,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

一. 數(shù)據(jù)卷的使用

有時(shí)候需要使用數(shù)據(jù)庫,但是又希望它的數(shù)據(jù)能保存在本地,Docker 中提供了數(shù)據(jù)卷可以供你方便的操作數(shù)據(jù)。數(shù)據(jù)卷是一個(gè)可供一個(gè)或多個(gè)容器使用的特殊目錄,它繞過 UFS,可以提供很多有用的特性:

數(shù)據(jù)卷可以在容器之間共享和重用

對數(shù)據(jù)卷的修改會(huì)立馬生效

對數(shù)據(jù)卷的更新,不會(huì)影響鏡像

數(shù)據(jù)卷默認(rèn)會(huì)一直存在,即使容器被刪除

注意:數(shù)據(jù)卷的使用,類似于 Linux 下對目錄或文件進(jìn)行 mount,鏡像中的被指定為掛載點(diǎn)的目錄中的文件會(huì)隱藏掉,能顯示看的是掛載的數(shù)據(jù)卷。

本次實(shí)驗(yàn)環(huán)境:騰訊云服務(wù)器  CentOS 6.7 x86_64

添加一個(gè)數(shù)據(jù)卷:
# docker run -d -it –name busybox -v /data/ busybox
這會(huì)在容器內(nèi)創(chuàng)建一個(gè) /data 目錄,并加載一個(gè)數(shù)據(jù)卷到容器的 /data 目錄。

進(jìn)入容器:
# docker exec -it busybox sh

查看目錄映射:

# docker inspect -f {{.Volumes}} busybox 
map[/data:/var/lib/docker/volumes/b98191464fb0b1a888507b1e5b324802012297342adfe5d6125bcbfd08b621a9/_data]

可以看到將容器中的 /data 目錄映射到了 /var/lib/docker/volumes/b98191464fb0b1a888507b1e5b324802012297342adfe5d6125bcbfd08b621a9/_data 這個(gè)目錄下,所以數(shù)據(jù)在容器中的 /data 目錄和此目錄下是同步的。

[root@sta2 data]# cd /var/lib/docker/volumes/b98191464fb0b1a888507b1e5b324802012297342adfe5d6125bcbfd08b621a9/_data
[root@sta2 _data]# touch b

在容器中 /data 目錄下查看:

/data # ls a b
b 文件依然存在。

數(shù)據(jù)卷是被設(shè)計(jì)用來持久化數(shù)據(jù)的,它的生命周期獨(dú)立于容器,Docker 不會(huì)在容器被刪除后自動(dòng)刪除數(shù)據(jù)卷,并且也不存在垃圾回收這樣的機(jī)制來處理沒有任何容器引用的數(shù)據(jù)卷。如果需要在刪除容器的同時(shí)移除數(shù)據(jù)卷。可以在刪除容器的時(shí)候使用  docker rm -v  這個(gè)命令。

[root@sta2 docker]# docker stop eec30d8d6fce [root@sta2 docker]# docker rm -v eec30d8d6fce
使用 -v 標(biāo)記也可以指定掛載一個(gè)本地主機(jī)的目錄到容器中去,-v 標(biāo)記也可以從主機(jī)掛載單個(gè)文件到容器中

[root@sta2 docker]# docker run -it –name mybusybox -v /data:/data busybox sh
這種方法相當(dāng)于在本機(jī)中指定了要映射的目錄,將本地的數(shù)據(jù)卷 /data 目錄加載到容器中的 /data 目錄。

/ # cd /data/
/data # ls
/data # touch c

然后在本機(jī)的 /data 目錄查看 c 文件是否存在:

[root@sta2 data]# ls 
a c

Docker 掛載數(shù)據(jù)卷的默認(rèn)權(quán)限是讀寫,用戶也可以通過 :ro 指定為只讀。

# docker run -it –name mybusybox -v /data:/data:ro busybox sh

二. 數(shù)據(jù)卷容器

如果你有一些持續(xù)更新的數(shù)據(jù)需要在容器之間共享,最好創(chuàng)建數(shù)據(jù)卷容器。

[root@sta2 data]# docker run -d -v /data/ –name dbdata busybox #首先,創(chuàng)建一個(gè)名為 dbdata 的數(shù)據(jù)卷容器
然后,在其他容器中使用 –volumes-from 來掛載 dbdata 容器中的數(shù)據(jù)卷。

# docker run -d --volumes-from dbdata --name db1 nginx
# docker run -d --volumes-from dbdata --name db2 nginx

也可以使用 –volumes-from 來掛載來自多個(gè)容器的多個(gè)數(shù)據(jù)卷:

# docker run -d –name db3 –volumes-from db1 –volumes-from db nginx
提示:使用 –volumes-from 參數(shù)所掛載數(shù)據(jù)卷的容器自己并不需要保持在運(yùn)行狀態(tài)。

備份數(shù)據(jù)卷

首先使用–volumes-from  標(biāo)記來創(chuàng)建一個(gè)加載 dbdata 容器卷的容器,并從主機(jī)掛載當(dāng)前目錄到容器的 /backup 目錄。命令如下:
# docker run –volumes-from dbdata -v /data:/backup busybox tar cvf /backup/backup.tar.gz /data

恢復(fù)

如果要恢復(fù)數(shù)據(jù)到一個(gè)容器,首先創(chuàng)建一個(gè)帶有空數(shù)據(jù)卷的容器 dbdata2。

# docker run -v /dbdata –name dbdata2 ubuntu /bin/bash
然后創(chuàng)建另一個(gè)容器,掛載 dbdata2 容器卷中的數(shù)據(jù)卷,并使用 untar 解壓備份文件到掛載的容器卷中。

# docker run –volumes-from dbdata2 -v /data:/backup busybox tar xvf /backup/backup.tar.gz
為了查看 / 驗(yàn)證恢復(fù)的數(shù)據(jù),可以再啟動(dòng)一個(gè)容器掛載同樣的容器卷來查看

# docker run –volumes-from dbdata2 busybox /bin/ls /dbdata

刪除數(shù)據(jù)

如果刪除了掛載的容器(db1 和 db2),數(shù)據(jù)卷并不會(huì)被自動(dòng)刪除。如果要?jiǎng)h除一個(gè)數(shù)據(jù)卷,必須在刪除最后一個(gè)還掛載著它的容器時(shí)使用 docker rm -v 命令來指定同時(shí)刪除關(guān)聯(lián)的容器。

以上是“Docker 中數(shù)據(jù)卷怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-16發(fā)表,共計(jì)2477字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評(píng)論(沒有評(píng)論)
主站蜘蛛池模板: 奎屯市| 林西县| 宝山区| 澜沧| 永丰县| 上虞市| 襄樊市| 惠州市| 绵阳市| 三明市| 凉城县| 恩平市| 长春市| 同仁县| 萨嘎县| 蓬莱市| 永宁县| 平潭县| 曲水县| 和平区| 通道| 城市| 淮安市| 丰都县| 神木县| 通州区| 临漳县| 四子王旗| 开原市| 上栗县| 松阳县| 龙岩市| 安图县| 壶关县| 兴海县| 黄石市| 金堂县| 北票市| 古浪县| 内黄县| 乐亭县|