欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

基本知識(shí)

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

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

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

數(shù)據(jù)卷

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

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

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

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

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

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

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

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

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

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

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

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

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

docker run --volumes-from 容器名

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

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

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

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

命令說明:

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

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

對(duì)鏡像進(jìn)行編譯。

docker build -t df_vo .

然后對(duì)進(jìn)行進(jìn)行創(chuàng)建 Container。

docker run --name votest -itd df_vo

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

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

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

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

再次搞個(gè)容器 votest_data2 進(jìn)行測(cè)試

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

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

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

啟動(dòng)兩個(gè)也帶有 -v 掛載方式的容器。 啟動(dòng)命令如下:

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

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

下面我們做下停機(jī)的相關(guān)測(cè)試

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

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

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

docker run votest

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

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

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

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

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

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

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

Now!!! 那我們?cè)趺醋寫?yīng)用程序 更新 最新到最新的 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

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

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

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

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

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

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

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

使用命令類似:

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

示例:

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

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)建一個(gè)容器掛在 votest_data6,就可以看到恢復(fù)的數(shù)據(jù)了。

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

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

Docker 啟動(dòng)容器后位置越來(lái)越大處理方法

默認(rèn)情況下 Docker 的存放位置為:/var/lib/docker

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

sudo docker info | grep "Docker Root Dir"

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

這個(gè)方法里將通過軟連接來(lái)實(shí)現(xiàn)。

首先停掉 Docker 服務(wù):

sudo systemctl stop docker

然后移動(dòng)整個(gè)/var/lib/docker 目錄到目的路徑:

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

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

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

可以使用普通用戶對(duì) docker 進(jìn)行管理

sudo usermod -aG docker cobra

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

相關(guān)文章

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

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

    這篇文章主要介紹了Docker 容器內(nèi)存監(jiān)控原理及應(yīng)用的相關(guā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)映射:主機(jī)與容器間目錄的雙向映射詳解

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

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

    Docker啟動(dòng)安裝nacos的實(shí)現(xiàn)示例

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

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

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

    docker使用Dockerfile構(gòu)建鏡像的方法

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

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

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

    詳解Django+Vue+Docker搭建接口測(cè)試平臺(tái)實(shí)戰(zhàn)

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

    Docker 教程之倉(cāng)庫(kù)配置文件詳解

    這篇文章主要介紹了Docker 教程之倉(cāng)庫(kù)配置文件詳解的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • docker報(bào)錯(cuò)x509:certificate has expired or is not yet valid問題及解決

    docker報(bào)錯(cuò)x509:certificate has expired or 

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

最新評(píng)論