最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker使用數(shù)據(jù)容器的具體示例

 更新時間:2023年07月23日 11:59:14   作者:大熊全棧分享  
本文主要介紹了Docker使用數(shù)據(jù)容器的具體示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

基本知識

在 Docker 的使用過程中往往需要對數(shù)據(jù)進行持久化,或者需要在多個容器之間進行數(shù)據(jù)共享,所以這就涉及到 Docker 容器的數(shù)據(jù)操作。

容器中數(shù)據(jù)管理主要有兩種方式:數(shù)據(jù)卷和數(shù)據(jù)卷容器。

  • 數(shù)據(jù)卷(Data Volumes) 容器內數(shù)據(jù)直接映射到本地宿主機。
  • 數(shù)據(jù)卷容器(Data Volume Containers) 使用特定容器維護數(shù)據(jù)卷。

數(shù)據(jù)卷

數(shù)據(jù)卷是一個特殊的目錄,它將主機目錄直接映射進容器。可供一個或多個容器使用。
數(shù)據(jù)卷設計的目的就是為了 數(shù)據(jù)的持久化,它完全獨立與容器的生命周期。因此,容器刪除時,不會刪除其掛載的數(shù)據(jù)卷,也不會存在類似的垃圾機制對容器存在的數(shù)據(jù)卷進行處理。

數(shù)據(jù)卷的特性:

  • 數(shù)據(jù)卷在容器啟動時初始化,如果容器使用的鏡像在掛載點包含了數(shù)據(jù),這些數(shù)據(jù)會拷貝到新初始化的數(shù)據(jù)卷中
  • 數(shù)據(jù)卷可以在容器之間共享和重用
  • 可以對數(shù)據(jù)卷里的內容直接修改,修改回馬上生效,無論是容器內操作還是本地操作
  • 對數(shù)據(jù)卷的更新不會影響鏡像的更新
  • 數(shù)據(jù)卷會一直存在,即使掛載數(shù)據(jù)卷的容器已經(jīng)被刪除

創(chuàng)建數(shù)據(jù)卷的方法 :docker run -v /lcoaldir:/volumedir -it /image /bin/bash

Notice: Docker 掛載數(shù)據(jù)卷的默認權限是讀寫(rw), 通過上面的 "RW": true 可以看到,我們也可以在創(chuàng)建的時候進行設置為只讀。
使用 ro 這種是通過-v的形式進行掛在容器的,還可以通過 Dockerfile 的創(chuàng)建鏡像的形式 進行掛載,但是這種掛載通過此鏡像創(chuàng)建的 Container 是完全獨立的。

#Dockerfile
FROM hub.c.163.com/library/ubuntu
VOLUME ["/datavolume1","/dockervolume2"]
CMD /bin/bash

1.執(zhí)行 docker build -t df_vo . 生成鏡像。

2.利用這個鏡像創(chuàng)建 Container. docker run --name votest1 -it df_vo
這樣的形式生成的 Continer 數(shù)據(jù)是相互獨立的。

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

用戶需要在多個容器之間共享一些數(shù)據(jù),就可以使用數(shù)據(jù)卷容器。
命名的容器掛載數(shù)據(jù)卷,其他容器通過掛載這個容器實現(xiàn)數(shù)據(jù)共享,掛載數(shù)據(jù)卷的容器,就叫數(shù)據(jù)卷容器。

  • 先創(chuàng)建一個容器
  • 然后掛載。

掛載數(shù)據(jù)卷容器的方法:

用戶需要在多個容器之間共享一些數(shù)據(jù),就可以使用數(shù)據(jù)卷容器。

docker run --volumes-from 容器名

命名的容器掛載數(shù)據(jù)卷,其他容器通過掛載這個容器實現(xiàn)數(shù)據(jù)共享,掛載數(shù)據(jù)卷的容器,就叫數(shù)據(jù)卷容器。
下面我們進行如下的數(shù)據(jù)卷容器的實驗

先創(chuàng)建一個數(shù)據(jù)容器鏡像

#Dockerfile
FROM alpine
WORKDIR /app
COPY ./datavolume1 .
VOLUME ["/app"]
RUN apk add --no-cache bash

注意 COPY 命令不能使用絕對路徑。必須使用相對路徑。

命令說明:

VOLUME 命令: 在 Dockerfile 中,我們可以事先指定某些目錄掛載為匿名卷,這樣在運行時如果用戶不指定掛載,其應用也可以正常運行,不會向容器存儲層寫入大量數(shù)據(jù)。

RUN apk add --no-cache bash to keep docker image size small. 最小化安裝 bash。

對鏡像進行編譯。

docker build -t df_vo .

然后對進行進行創(chuàng)建 Container。

docker run --name votest -itd df_vo

掛載數(shù)據(jù)卷容器的方法:

docker run --volumes-from 容器名
#啟動一個數(shù)據(jù)盤容器, 數(shù)據(jù)盤掛載votest容器。
docker run -it --name votest_data1 --volumes-from votest df_vo

--------------數(shù)據(jù)變化測試--------------
這個可以在 votest_data1 中的 app 目錄下看到從 磁盤帶進來的數(shù)據(jù)。
做如下測試:

  • 修改 votest 容器中的數(shù)據(jù), votest_data1 中的數(shù)據(jù)發(fā)生變化。
  • 修改 votest_data1 中數(shù)據(jù) votest 容器中的數(shù)據(jù)發(fā)生變化。

再次搞個容器 votest_data2 進行測試

docker run -it --name votest_data2 --volumes-from votest df_vo

這個時候在啟動一個 votest_data2 同樣的做文件變動測試,三者完全是聯(lián)動的。
其實這些是否聯(lián)動通過docker inspect命令,找到 Mounts/Name ,表示掛載磁盤的位置。

現(xiàn)在再進行下一步的測試:

啟動兩個也帶有 -v 掛載方式的容器。 啟動命令如下:

docker run -it --name votest_data3 -v /home/homework/Cobra/docker/datavolume/log:/app/log --volumes-from votest df_vo
docker run -it --name votest_data4 -v /home/homework/Cobra/docker/datavolume/log:/app/log --volumes-from votest df_vo

做如下測試:【3 應用容器,4 應用容器 ,0 代表數(shù)據(jù)卷容器, L 代表主機本地,log 目錄為從硬盤來源目錄】
其中 log 在 應用容器 和 本地是完全相通的。
其中 0,3,4 數(shù)據(jù)之間的數(shù)據(jù)是完全相通的。
通過-v 掛進去的數(shù)據(jù)磁盤,不會影響到數(shù)據(jù)卷。 他們各自在各自的區(qū)域內形成的數(shù)據(jù)相互影響。

下面我們做下停機的相關測試

將 3 數(shù)據(jù)容器給停止掉。docker stop votest_data3
在 4 中修改各自范圍內文件,0 變,本地也變,他們不會收到 3 的影響。
將 3 數(shù)據(jù)容器啟動,docker start votest_data3
首先看到 3 中的文件已經(jīng)改變了。已經(jīng)和 4,5 同步。

現(xiàn)在將 0 停掉 docker stop votest
在 3 中修改 數(shù)據(jù)卷掛載進來的數(shù)據(jù)。這個時候也會影響到 4。 也就是 3 和 4 是相互通的。
(盡管現(xiàn)在已經(jīng)將數(shù)據(jù)盤給停掉了!!!!!!)
這個特性太牛逼了,這樣可以將數(shù)據(jù)盤進行 Hot--Update,不會影響業(yè)務使用。

現(xiàn)在將數(shù)據(jù)盤重新進行啟動,查看 3 和 4 中的數(shù)據(jù)是否會更新?

docker run votest

這個時候啟動發(fā)現(xiàn)數(shù)據(jù)盤容器的數(shù)據(jù)也恢復到了 和 3、4 號容器同步了。 這個。。。。

現(xiàn)在我們重新對 votest container 刪除掉,然后重新創(chuàng)建,我看看下 3、4 號 container 的反應。

docker stop votest
docker rm votest
docker run --name votest -itd df_vo

這個時候發(fā)現(xiàn) 數(shù)據(jù) votest container 已經(jīng)完全和 3、4 號容器隔離了。修改 votest 不會引起其他的變化。

Now?。?!我們繼續(xù)測試。docker restart votest_data3 對 3 號容器進行重啟,看看其數(shù)據(jù)變化情況。

  • 重啟發(fā)現(xiàn) 3 號和 4 號依然是舊的數(shù)據(jù)容器并且是相通的。
  • 同時關閉 3 和 4 然后同時重啟,不管怎么操作 3 和 4 都是相通的。。

說明 docker start/stop 不能打斷他們想通性。

Now!!! 那我們怎么讓應用程序 更新 最新到最新的 votest 的數(shù)據(jù)容器呢?

docker stop dvtest_data3
docker rm dvtest_data3
#再次重建生成容器
docker run -it --name votest_data3 -v /home/homework/Cobra/docker/datavolume/log:/app/log --volumes-from votest df_vo

這個時候發(fā)現(xiàn) votest_data3 和 votest 的數(shù)據(jù)進行了同步。 這樣就是實現(xiàn)了數(shù)據(jù)的同步。
結論:如果要實現(xiàn)數(shù)據(jù)的熱更新,應該對 votest 然后對 votest_data 依次進行重新生成 Container。

數(shù)據(jù)卷的備份和還原

數(shù)據(jù)卷備份使用的命令:

docker run --volumes-from 存在的容器名 -v $(pwd):/backup --name 新建的容器名 鏡像名 tar cvf /backup/backup.tar 數(shù)據(jù)卷
$(pwd)當前路徑

docker run --volumes-from votest-data5 -v /root/backup:/backup hub.c.163.com/library/ubuntu tar cvf /backup/vof1.tar /app

這個時候會出來一個包。在/root/backup 的目錄下,有個 vof1.tar 的包。
這個原理很簡單,新建一個 Container,然后掛盤本地的磁盤,然后執(zhí)行 tar 命令備份指定的文件夾。

數(shù)據(jù)卷的還原

使用命令類似:

docker run --volumes-from 存在的容器名 -v $(pwd):/backup --name 新建的容器名 鏡像名 tar xvf /backup/backup.tar

示例:

創(chuàng)建一個容器 votest8 還原數(shù)據(jù)卷,這樣數(shù)據(jù)就又重新回來了。

docker run --volumes-from votest_data6 -v /root/backup:/backup --name votest8 hub.c.163.com/library/ubuntu tar xvf /backup/vof.tar

通過 docker ps -a 可以看到創(chuàng)建的數(shù)據(jù)容器。

最后創(chuàng)建一個容器掛在 votest_data6,就可以看到恢復的數(shù)據(jù)了。

docker run -it --volumes-from votest_data6 hub.c.163.com/library/ubuntu /bin/bash

注意這個容器里面會多出來一個 backup 的文件夾,正式備份的文件,其他的文件也已經(jīng)加載進來。 這種查看的方法是通過創(chuàng)建一個 container 進去進入查看。

Docker 啟動容器后位置越來越大處理方法

默認情況下 Docker 的存放位置為:/var/lib/docker

我們可以通過下面的命令查看

sudo docker info | grep "Docker Root Dir"

解決這個問題,最直接的方法當然是掛載分區(qū)到這個目錄,但是我的數(shù)據(jù)盤還有其他東西,這肯定不好管理,所以采用修改鏡像和容器的存放路徑的方式達到目的。

這個方法里將通過軟連接來實現(xiàn)。

首先停掉 Docker 服務:

sudo systemctl stop docker

然后移動整個/var/lib/docker 目錄到目的路徑:

mv `/var/lib/docker` /data/docker
ln -s /data/docker `/var/lib/docker`

這時候啟動 Docker 時發(fā)現(xiàn)存儲目錄依舊是/var/lib/docker,但是實際上是存儲在數(shù)據(jù)盤的,你可以在數(shù)據(jù)盤上看到容量變化。

Docker 將普通用戶加入到 docker 組中

可以使用普通用戶對 docker 進行管理

sudo usermod -aG docker cobra

到此這篇關于Docker使用數(shù)據(jù)容器的具體示例的文章就介紹到這了,更多相關Docker 數(shù)據(jù)容器內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • docker的pdflatex環(huán)境配置的方法步驟

    docker的pdflatex環(huán)境配置的方法步驟

    這篇文章主要介紹了docker的pdflatex環(huán)境配置的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • docker部署kafka的方法步驟

    docker部署kafka的方法步驟

    本文主要介紹了docker部署kafka的方法步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • docker compose安裝es+kibana 8.12.2的詳細過程

    docker compose安裝es+kibana 8.12.2的詳細過程

    因云平臺需要改造,es7升級為es8,所以記錄一下,es8需要開啟ssl認證,需要配置證書,全本帶你用docker安裝,便于后面es8的學習,這篇文章主要介紹了docker compose安裝es+kibana 8.12.2的詳細過程,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • docker部署mysql和nginx服務的示例詳解

    docker部署mysql和nginx服務的示例詳解

    這篇文章主要為大家詳細介紹了docker部署mysql和nginx服務的相關知識,文中的示例代碼簡潔易懂,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-04-04
  • win7下docker安裝與報錯問題的解決方法

    win7下docker安裝與報錯問題的解決方法

    這篇文章主要為大家詳細介紹了win7下docker安裝與報錯問題的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 前端實現(xiàn)自動化部署docker+Jenkins的完整過程

    前端實現(xiàn)自動化部署docker+Jenkins的完整過程

    在現(xiàn)代前端開發(fā)中自動化部署變得越來越重要,通過使用Docker、Jenkins和Nginx,我們可以實現(xiàn)高效的前端自動化部署,這篇文章主要介紹了前端實現(xiàn)自動化部署docker+Jenkins的完整過程,需要的朋友可以參考下
    2025-07-07
  • Docker守護進程安全配置項目詳解

    Docker守護進程安全配置項目詳解

    這篇文章主要介紹了Docker守護進程安全配置介紹,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • 云原生教程之使用Docker部署webssh工具sshwifty

    云原生教程之使用Docker部署webssh工具sshwifty

    Sshwifty是一個開源的WebSSH?&?WebTelnet客戶端,下面這篇文章主要給大家介紹了關于云原生教程之使用Docker部署webssh工具sshwifty的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-03-03
  • docker容器創(chuàng)建的全流程分享

    docker容器創(chuàng)建的全流程分享

    這篇文章主要介紹了docker容器創(chuàng)建的全流程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-05-05
  • Docker快速搭建Redis集群的方法示例

    Docker快速搭建Redis集群的方法示例

    這篇文章主要介紹了Docker快速搭建Redis集群的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05

最新評論

永和县| 大理市| 土默特右旗| 固安县| 庆城县| 保定市| 文成县| 南宁市| 华坪县| 织金县| 宕昌县| 沿河| 响水县| 高州市| 天全县| 新源县| 酉阳| 长阳| 财经| 宝坻区| 阿尔山市| 霍山县| 额尔古纳市| 务川| 宁陕县| 三都| 东台市| 法库县| 阜新市| 西和县| 南召县| 凌海市| 揭阳市| 阳西县| 三门峡市| 黑河市| 贞丰县| 伊春市| 精河县| 祁阳县| 大同市|