亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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) 容器內(nèi)數(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ù)卷里的內(nèi)容直接修改,修改回馬上生效,無論是容器內(nèi)操作還是本地操作
  • 對數(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ū)域內(nèi)形成的數(shù)據(jù)相互影響。

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

將 3 數(shù)據(jù)容器給停止掉。docker stop votest_data3
在 4 中修改各自范圍內(nèi)文件,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ù)容器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Docker 容器內(nèi)存監(jiān)控原理及應用

    Docker 容器內(nèi)存監(jiān)控原理及應用

    這篇文章主要介紹了Docker 容器內(nèi)存監(jiān)控原理及應用的相關資料,需要的朋友可以參考下
    2016-10-10
  • 如何使用docker創(chuàng)建minio鏡像并上傳文件并提供demo

    如何使用docker創(chuàng)建minio鏡像并上傳文件并提供demo

    這篇文章主要介紹了使用docker創(chuàng)建minio鏡像并上傳文件,提供demo,minio還是很方便的,從部署到使用,都可以非??焖俚拇罱?而且比較穩(wěn)定,需要的朋友可以參考下
    2023-09-09
  • Docker的文件系統(tǒng)映射:主機與容器間目錄的雙向映射詳解

    Docker的文件系統(tǒng)映射:主機與容器間目錄的雙向映射詳解

    通過Docker的目錄映射功能,實現(xiàn)主機與容器間的數(shù)據(jù)共享與持久化存儲,使用-v或--mount參數(shù)在運行時設置主機與容器目錄映射,或通過DockerCompose配置文件實現(xiàn)自動化,此功能提升數(shù)據(jù)管理靈活性和效率
    2024-11-11
  • Docker啟動安裝nacos的實現(xiàn)示例

    Docker啟動安裝nacos的實現(xiàn)示例

    本文主要介紹了Docker啟動安裝nacos的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-09-09
  • Docker容器之間數(shù)據(jù)傳輸?shù)膶崿F(xiàn)

    Docker容器之間數(shù)據(jù)傳輸?shù)膶崿F(xiàn)

    本文主要介紹了Docker容器之間數(shù)據(jù)傳輸?shù)膶崿F(xiàn),文中根據(jù)實例編碼詳細介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • docker使用Dockerfile構建鏡像的方法

    docker使用Dockerfile構建鏡像的方法

    這篇文章主要介紹了docker使用Dockerfile構建鏡像的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • Docker存儲空間清理以及另外的一些命令

    Docker存儲空間清理以及另外的一些命令

    大家在使用一段時間的docker容器后,會發(fā)現(xiàn)堆疊了很多無用的垃圾文件,比如,終止的容器、限定不要的鏡像,混亂的存儲等,這篇文章主要介紹了Docker存儲空間清理以及另外的一些命令的相關資料,需要的朋友可以參考下
    2024-03-03
  • 詳解Django+Vue+Docker搭建接口測試平臺實戰(zhàn)

    詳解Django+Vue+Docker搭建接口測試平臺實戰(zhàn)

    這篇文章主要介紹了詳解Django+Vue+Docker搭建接口測試平臺實戰(zhàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • Docker 教程之倉庫配置文件詳解

    Docker 教程之倉庫配置文件詳解

    這篇文章主要介紹了Docker 教程之倉庫配置文件詳解的相關資料,需要的朋友可以參考下
    2016-12-12
  • docker報錯x509:certificate has expired or is not yet valid問題及解決

    docker報錯x509:certificate has expired or 

    這篇文章主要介紹了docker報錯x509:certificate has expired or is not yet valid問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03

最新評論