?????歡迎來到我的CSDN主頁!????
??我是君易--鑨,一個在CSDN分享筆記的博主。????
??推薦給大家我的博客專欄《Docker之?dāng)?shù)據(jù)卷的使用》。????
??如果感覺還不錯的話請給我關(guān)注加三連吧!????
?
一、數(shù)據(jù)卷的簡介
1. Docker數(shù)據(jù)管理
????????Docker 提供了多種方式來管理容器中的數(shù)據(jù),以確保數(shù)據(jù)的持久性和可靠性。以下是一些常見的 Docker 數(shù)據(jù)管理方式:
1.1?數(shù)據(jù)卷(Volumes)
????????數(shù)據(jù)卷是 Docker 中最常用的數(shù)據(jù)管理方式之一。數(shù)據(jù)卷是容器與主機(jī)之間共享的持久化存儲,獨(dú)立于容器的生命周期。數(shù)據(jù)卷可以用于存儲應(yīng)用程序數(shù)據(jù)、配置文件等。容器可以通過掛載數(shù)據(jù)卷來訪問和修改其中的數(shù)據(jù)。數(shù)據(jù)卷的好處包括數(shù)據(jù)的持久性、容器之間的共享數(shù)據(jù),以及方便數(shù)據(jù)備份和恢復(fù)。
# 創(chuàng)建數(shù)據(jù)卷
docker volume create my_volume
# 啟動容器并掛載數(shù)據(jù)卷
docker run -d -v my_volume:/path/in/container my_image
1.2?綁定掛載(Bind Mounts)
????????綁定掛載允許將主機(jī)文件系統(tǒng)上的特定路徑掛載到容器內(nèi)的路徑。這種方式可以用于在容器中訪問主機(jī)上的文件或目錄,也可以用于在主機(jī)和容器之間實現(xiàn)數(shù)據(jù)共享。
# 啟動容器并使用綁定掛載
docker run -d -v /host/path:/container/path my_image
1.3?匿名卷
????????Docker 允許在容器中創(chuàng)建匿名卷,這些卷不會直接與主機(jī)上的文件系統(tǒng)關(guān)聯(lián),而是存儲在 Docker 管理的卷中。這樣可以確保容器的數(shù)據(jù)在主機(jī)上是相對隔離的。
# 啟動容器并使用匿名卷
docker run -d -v /container/path my_image
1.4 數(shù)據(jù)卷容器
????????可以創(chuàng)建一個專門用于存儲數(shù)據(jù)的容器,其他容器通過掛載這個容器的數(shù)據(jù)卷來實現(xiàn)數(shù)據(jù)共享。這樣的容器通常被稱為數(shù)據(jù)卷容器。
# 創(chuàng)建數(shù)據(jù)卷容器
docker create -v /data --name my_data_container my_image
# 啟動應(yīng)用容器,并掛載數(shù)據(jù)卷容器
docker run --volumes-from my_data_container another_image
?1.5?Docker Compose
????????Docker Compose 是一個用于定義和運(yùn)行多容器 Docker 應(yīng)用程序的工具。通過 Compose 文件,可以方便地定義多個服務(wù)、容器、網(wǎng)絡(luò)和數(shù)據(jù)卷,并一起管理它們的生命周期。
version: '3'
services:
web:
image: my_web_app
volumes:
- my_volume:/app/data
volumes:
my_volume:
? ? ? ? ?總之,這些數(shù)據(jù)管理方式可以根據(jù)應(yīng)用程序的需求進(jìn)行選擇和組合。使用適當(dāng)?shù)臄?shù)據(jù)管理方式有助于確保容器中的數(shù)據(jù)持久、可靠、易于備份和恢復(fù)。
2.??數(shù)據(jù)卷的簡介
2.1 數(shù)據(jù)卷的關(guān)鍵特性
關(guān)鍵特性 | 說明 |
持久性 | 數(shù)據(jù)卷中的數(shù)據(jù)是持久的,即使容器被刪除,數(shù)據(jù)卷依然存在。這使得數(shù)據(jù)可以在容器之間共享,而不受容器生命周期的限制。 |
獨(dú)立于容器 | 數(shù)據(jù)卷是獨(dú)立于容器的實體,它可以被多個容器掛載和共享。這種獨(dú)立性使得數(shù)據(jù)卷可以被用于存儲共享數(shù)據(jù)、配置信息等。 |
掛載點(diǎn) | 在容器內(nèi),數(shù)據(jù)卷通過指定掛載點(diǎn)(Mount Point)來與容器中的路徑關(guān)聯(lián)。容器內(nèi)的應(yīng)用程序可以讀寫這個掛載點(diǎn),實現(xiàn)對數(shù)據(jù)卷中數(shù)據(jù)的訪問。 |
主機(jī)和容器之間的數(shù)據(jù)傳遞 | 數(shù)據(jù)卷可以用于在主機(jī)和容器之間傳遞數(shù)據(jù)。通過掛載主機(jī)上的路徑到容器內(nèi),可以實現(xiàn)主機(jī)和容器之間的數(shù)據(jù)共享。 |
2.2 數(shù)據(jù)卷的一些基本使用方式
創(chuàng)建數(shù)據(jù)卷
docker volume create my_volume
啟動容器并掛載數(shù)據(jù)卷
docker run -d -v my_volume:/path/in/container my_image
查看數(shù)據(jù)卷信息
docker volume inspect my_volume
3. 數(shù)據(jù)卷容器簡介
3.1?數(shù)據(jù)卷容器的一些關(guān)鍵特性
關(guān)鍵特性 | 說明 |
持久性 | 數(shù)據(jù)卷中的數(shù)據(jù)是持久的,即使容器被刪除,數(shù)據(jù)卷依然存在。這使得數(shù)據(jù)可以在容器之間共享,而不受容器生命周期的限制。 |
獨(dú)立于容器 | 數(shù)據(jù)卷是獨(dú)立于容器的實體,它可以被多個容器掛載和共享。這種獨(dú)立性使得數(shù)據(jù)卷可以被用于存儲共享數(shù)據(jù)、配置信息等。 |
掛載點(diǎn) | 在容器內(nèi),數(shù)據(jù)卷通過指定掛載點(diǎn)(Mount Point)來與容器中的路徑關(guān)聯(lián)。容器內(nèi)的應(yīng)用程序可以讀寫這個掛載點(diǎn),實現(xiàn)對數(shù)據(jù)卷中數(shù)據(jù)的訪問。 |
主機(jī)和容器之間的數(shù)據(jù)傳遞 | 數(shù)據(jù)卷可以用于在主機(jī)和容器之間傳遞數(shù)據(jù)。通過掛載主機(jī)上的路徑到容器內(nèi),可以實現(xiàn)主機(jī)和容器之間的數(shù)據(jù)共享。3.2 s |
3.2 數(shù)據(jù)卷容器的基本使用
創(chuàng)建數(shù)據(jù)卷容器?
docker create -v /data --name my_data_container my_image
啟動其他容器并掛載數(shù)據(jù)卷容器
docker run --volumes-from my_data_container -d another_image
查看數(shù)據(jù)卷容器信
docker inspect my_data_container
二、實用演示
1. 數(shù)據(jù)卷掛載
? ? ? ? 我們創(chuàng)建一個容器并且進(jìn)入到我們的容器中,在容器中創(chuàng)建一個文件并且編寫其內(nèi)容在里面
?
? ? ? ? 然后我們按住ctrl+d退出容器,然后刪除所有的容器,再重新創(chuàng)建一個一樣的容器。?
? ? ? ? ?由上圖可知我們在新建的一個容器中并沒有我們之前在容器中新建的a.txt文件,因為每個容器的數(shù)據(jù)都是獨(dú)立的,而且數(shù)據(jù)跟隨者容器的生命周期的。
? ? ? ? ?首先我們先確保我們有tomcat鏡像,沒有的話我們輸入指令docker pull tomcat 版本執(zhí)行進(jìn)行拉取。
? ? ? ? ?我們用tomcat的鏡像創(chuàng)建一個容器
? ? ? ? ?我們本機(jī)的網(wǎng)頁上去訪問我們Docker中的服務(wù)器,如果訪問不了需要我們開放端口號
指令:firewall-cmd --zone=public --add-port=8080/tcp? ? ?//開放對應(yīng)端口
? ? ? ? ? ?firewall-cmd reload? ? //刷新防火墻
我們在tomcat首頁可以進(jìn)行項目發(fā)布,點(diǎn)擊右側(cè)的Manager App進(jìn)行發(fā)布,但是我們的tomcat沒有user.xml文件沒有用戶信息,因此我們需要添加其文件。??我們可以子外面編寫好文件利用數(shù)據(jù)卷將其放到我們的tomcat中進(jìn)行其覆蓋。
? ? ? ? ?我們進(jìn)入我們創(chuàng)建的tomcat容器中
? ? ? ?我們進(jìn)入tomcat服務(wù)器中的webapps文件目錄下,將我們的項目war通過第三方連接工具使用托拉拽的方式添加到里面。
? ? ? ? 我們創(chuàng)建一個數(shù)據(jù)卷??
?????????掛載數(shù)據(jù)卷 :
在用 docker run 命令的時候,使用 -- mount 標(biāo)記來將 數(shù)據(jù)卷 掛載到容器里。在一次 dockerrun 中可以掛載多個 數(shù)據(jù)卷 。
?
? ? ? ? ?我們新建一個窗口進(jìn)行瓜掛載同一個數(shù)據(jù)卷,進(jìn)入其生成的數(shù)據(jù)卷的文件夾
? ? ? ? ?我們在c3中的testdir中新建一個文件,我們進(jìn)入到c2的testdir中進(jìn)行查看
? ? ? ? ?由此可知數(shù)據(jù)卷的數(shù)據(jù)是共享的,我們將所有的容器刪除掉,我們切換到v1的目錄下,將war包拖至該目錄下。
? ? ? ? 我們再執(zhí)行命令將數(shù)據(jù)卷的內(nèi)容弄到指定的目錄下。?是一整個目錄的替換
?
?????????我們再去訪問虛擬機(jī)的tomcat。因為我們的文件覆蓋了
?
? ? ? ? ?因為我們導(dǎo)入的項目包時war包,因此會自動給我們解壓,我們可以直接在網(wǎng)頁進(jìn)行訪問。
2. 目錄掛載
? ? ? ? 去除容器和數(shù)據(jù)卷
? ? ? ? ? 我們在根目錄下創(chuàng)建一個文件夾用于實現(xiàn)目錄掛載
? ? ? ? ?切入到該文件中,將我們的war包放入到文件夾中
?
? ? ? ? ?接下來進(jìn)行目錄掛載。
?
?????????我們再去網(wǎng)頁訪問8080
? ? ? ? ?再去訪問我們的項目
? ? ? ? ?/soft直接將webapps文件替換掉了。我們?nèi)コ械娜萜?,?zhí)行下述指令:
docker run -itd --name t1 -v /soft/oapro.war:/usr/local/tomcat/webapps/oapro.war -p 8080:8080 tomcat:8.5.2
?
? ? ? ? 我們再訪問項目和服務(wù)器??
?????本期的博客分享到此結(jié)束????
????各位老鐵慢慢消化????
????下期博客博主會帶來新貨????
??三連加關(guān)注,閱讀不迷路?!??文章來源:http://www.zghlxwxcb.cn/news/detail-812600.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-812600.html
到了這里,關(guān)于Docker之?dāng)?shù)據(jù)卷的使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!