docker<容器數(shù)據(jù)卷-v>對(duì)容器內(nèi)數(shù)據(jù)持久化詳解(備份)
前言
在docker創(chuàng)建容器,掛載目錄的時(shí)候,可能會(huì)出現(xiàn)目錄無法訪問無法打開的問題(cannot open directory .: Permission denied)
只需要加一個(gè) --privileged=true 參數(shù)即可,加上這個(gè)參數(shù)代表是以root用戶權(quán)限進(jìn)入容器的,不加就是以普通用戶權(quán)限進(jìn)入容器的
例如,test鏡像創(chuàng)建一個(gè)容器t1
docker run -d -p 5555:5555 -v /etc/config:/tmp/config --privileged=true --name t1 test
正文
容器數(shù)據(jù)卷,也就是把容器內(nèi)部目錄掛載到宿主機(jī)目錄(前言中說的掛載文件 -v ),獨(dú)立于容器的生命周期之外,可以防止容器銷毀而丟失文件
特點(diǎn):
1、可以在多個(gè)容器之間共享或重用
2、數(shù)據(jù)卷中的更改可以實(shí)時(shí)生效
3、數(shù)據(jù)卷中的更改不會(huì)包含在鏡像的更新中
4、數(shù)據(jù)卷的生命周期一直持續(xù)到?jīng)]有容器使用
例如,掛載本機(jī)/tmp/data目錄到容器中的/tmp/docker_data目錄(如果本機(jī)沒有/tmp/data目錄,docker會(huì)自行創(chuàng)建)
docker run -it --privileged=true -v /tmp/data:/tmp/docker_data --name t1 test /bin/bash
-it進(jìn)入容器,在/tmp/docker_data目錄下創(chuàng)建一個(gè)test.txt文件,退出容器到宿主機(jī)的掛載目錄下,可以看到已經(jīng)有一個(gè)test.txt文件了,反之在宿主機(jī)目錄下更改或創(chuàng)建文件,容器內(nèi)目錄也同步生效
實(shí)現(xiàn)了容器內(nèi)數(shù)據(jù)持久化到宿主機(jī),并且雙方修改實(shí)時(shí)生效
如果在容器停止運(yùn)行的情況下,修改宿主機(jī)掛載目錄內(nèi)容,容器啟動(dòng)后,同樣會(huì)讀取最新數(shù)據(jù)
如果忘記容器掛載到宿主機(jī)哪個(gè)目錄了,可以使用docker inspect命令查看容器信息
docker inspect 容器id
數(shù)據(jù)卷讀寫規(guī)則
像上面那個(gè)案例,默認(rèn)是可讀可寫的,也就相當(dāng)于在后面加了一個(gè)rw,即:
docker run -it --privileged=true -v /tmp/data:/tmp/docker_data:rw --name t1 test /bin/bash
如果需要容器內(nèi)只讀,可以改成ro,即
docker run -it --privileged=true -v /tmp/data:/tmp/docker_data:ro --name t1 test /bin/bash
此時(shí)在宿主機(jī)修改的內(nèi)容可以同步到容器內(nèi),但是容器內(nèi)是只讀的,如果繼續(xù)在容器內(nèi)操作,會(huì)提示Read-only file system
數(shù)據(jù)卷的繼承和共享
如果想要新創(chuàng)建一個(gè)容器t2,也使用t1的數(shù)據(jù)卷,只需要使用--volumes-from命令繼承t1即可
docker run -it --privileged=true --volumes-from t1 --name t2 test /bin/bash
此時(shí)t2也就跟t1一樣掛載主機(jī)目錄了,t2里面也可以看到/tmp/docker_data目錄下的內(nèi)容,并實(shí)時(shí)更新
如果t1停了,對(duì)t2是沒有影響的,因?yàn)閠2是繼承的t1的掛載規(guī)則
總結(jié)
到此這篇關(guān)于docker<容器數(shù)據(jù)卷-v>對(duì)容器內(nèi)數(shù)據(jù)持久化文章就介紹到這了,更多相關(guān)docker容器內(nèi)數(shù)據(jù)持久化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker搭建minio服務(wù)器,解決內(nèi)網(wǎng)穿透后外網(wǎng)無法訪問
這篇文章主要介紹了docker搭建minio服務(wù)器,解決內(nèi)網(wǎng)穿透后外網(wǎng)無法訪問的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09使用docker搭建嵌入式Linux開發(fā)環(huán)境
本文主要介紹了使用docker搭建嵌入式Linux開發(fā)環(huán)境,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-08-08Docker安裝部署分布式數(shù)據(jù)庫?OceanBase的詳細(xì)過程
這篇文章主要介紹了Docker安裝部署分布式數(shù)據(jù)庫?OceanBase,快速的體驗(yàn) OceanBase 的自動(dòng)化部署過程,及了解 OceanBase 集群安裝成功后的目錄特點(diǎn)和使用方法,需要的朋友可以參考下2022-06-06使用docker的python基礎(chǔ)鏡像時(shí)要指定patch版本原理
這篇文章主要為大家介紹了使用docker的python基礎(chǔ)鏡像時(shí)要指定patch版本原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10Docker Base Image自己創(chuàng)建具體實(shí)現(xiàn)
這篇文章主要介紹了Docker Base Image創(chuàng)建具體實(shí)現(xiàn)的相關(guān)資料,這里提供了詳細(xì)的具體步驟,需要的朋友可以參考下2016-11-11使用Dockerfile創(chuàng)建自定義鏡像的詳細(xì)步驟
使用 Dockerfile 創(chuàng)建自定義鏡像的過程非常清晰,通常包括定義基礎(chǔ)鏡像、安裝依賴、復(fù)制代碼、設(shè)置環(huán)境變量和啟動(dòng)命令等步驟,下面詳細(xì)講解從零創(chuàng)建自定義鏡像的完整流程,需要的朋友可以參考下2025-06-06