docker<容器數(shù)據(jù)卷-v>對容器內(nèi)數(shù)據(jù)持久化詳解(備份)
前言
在docker創(chuàng)建容器,掛載目錄的時候,可能會出現(xiàn)目錄無法訪問無法打開的問題(cannot open directory .: Permission denied)
只需要加一個 --privileged=true 參數(shù)即可,加上這個參數(shù)代表是以root用戶權(quán)限進入容器的,不加就是以普通用戶權(quán)限進入容器的
例如,test鏡像創(chuàng)建一個容器t1
docker run -d -p 5555:5555 -v /etc/config:/tmp/config --privileged=true --name t1 test
正文
容器數(shù)據(jù)卷,也就是把容器內(nèi)部目錄掛載到宿主機目錄(前言中說的掛載文件 -v ),獨立于容器的生命周期之外,可以防止容器銷毀而丟失文件
特點:
1、可以在多個容器之間共享或重用
2、數(shù)據(jù)卷中的更改可以實時生效
3、數(shù)據(jù)卷中的更改不會包含在鏡像的更新中
4、數(shù)據(jù)卷的生命周期一直持續(xù)到?jīng)]有容器使用
例如,掛載本機/tmp/data目錄到容器中的/tmp/docker_data目錄(如果本機沒有/tmp/data目錄,docker會自行創(chuàng)建)
docker run -it --privileged=true -v /tmp/data:/tmp/docker_data --name t1 test /bin/bash
-it進入容器,在/tmp/docker_data目錄下創(chuàng)建一個test.txt文件,退出容器到宿主機的掛載目錄下,可以看到已經(jīng)有一個test.txt文件了,反之在宿主機目錄下更改或創(chuàng)建文件,容器內(nèi)目錄也同步生效
實現(xiàn)了容器內(nèi)數(shù)據(jù)持久化到宿主機,并且雙方修改實時生效
如果在容器停止運行的情況下,修改宿主機掛載目錄內(nèi)容,容器啟動后,同樣會讀取最新數(shù)據(jù)
如果忘記容器掛載到宿主機哪個目錄了,可以使用docker inspect命令查看容器信息
docker inspect 容器id
數(shù)據(jù)卷讀寫規(guī)則
像上面那個案例,默認是可讀可寫的,也就相當于在后面加了一個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
此時在宿主機修改的內(nèi)容可以同步到容器內(nèi),但是容器內(nèi)是只讀的,如果繼續(xù)在容器內(nèi)操作,會提示Read-only file system
數(shù)據(jù)卷的繼承和共享
如果想要新創(chuàng)建一個容器t2,也使用t1的數(shù)據(jù)卷,只需要使用--volumes-from命令繼承t1即可
docker run -it --privileged=true --volumes-from t1 --name t2 test /bin/bash
此時t2也就跟t1一樣掛載主機目錄了,t2里面也可以看到/tmp/docker_data目錄下的內(nèi)容,并實時更新
如果t1停了,對t2是沒有影響的,因為t2是繼承的t1的掛載規(guī)則
總結(jié)
到此這篇關(guān)于docker<容器數(shù)據(jù)卷-v>對容器內(nèi)數(shù)據(jù)持久化文章就介紹到這了,更多相關(guān)docker容器內(nèi)數(shù)據(jù)持久化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何解決Linux系統(tǒng)下Docker占滿分區(qū)的問題
本篇文章主要介紹了如何解決Linux系統(tǒng)下Docker占滿分區(qū)的問題。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07詳解基于docker 如何部署surging分布式微服務(wù)引擎
這篇文章主要介紹了詳解基于docker 如何部署surging分布式微服務(wù)引擎,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06docker swarm如何在指定的node上運行指定的容器
這篇文章主要介紹了docker swarm如何在指定的node上運行指定的容器,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07Jenkins整合Docker實現(xiàn)CICD自動化部署的詳細過程(若依項目)
本文介紹了如何使用Jenkins和Docker實現(xiàn)CI/CD自動化部署,文章介紹了環(huán)境準備,包括Jenkins、Docker、JDK、Node和Maven,然后討論了如何配置GitLab環(huán)境并利用Webhooks實現(xiàn)代碼的自動拉取和部署,最后,展示了如何部署前后端分離的項目,并通過實際操作驗證了整個流程的有效性2024-10-10