Docker學習(九)Volumn容器間共享資料
Docker學習(九)Volumn容器間共享資料
volume是什麼
volume在英文中是容量的意思, 在docker中是資料卷的意思,是用來儲存資料的容器
為什麼要進行資料共享
在叢集中有多臺tomcat,對於叢集中的tomcat部署的程式碼是同一份程式碼的副本,如果頁面檔案發生變化,意味著每個容器中的頁面檔案都要進行更新,在大規模的叢集中這樣的工作量會被無限放大,這時候就需要用到資料共享解決此問題,所謂資料共享指的是多個容器共享一個數據副本,在docker環境中我們該如何實現?
資料共享原理
在宿主機的硬碟上開闢一個空間,用來存放共享的資料,多個容器共享這個目錄
實現資料共享的解決方案
說到資料共享我們其實很容易想到linux中的mount命令,通過掛載一共享目錄來
- [x] 使用引數
-v 宿主機目錄:/容器內容目錄
將共享的檔案放在宿主機的某個檔案中,然後多個容器之前共享這一個目錄,實現資料共享,這需要在啟動時
- [x] 使用引數
-v 宿主機目錄:/容器內容目錄
共享容器掛載宿主機共享目錄,然後通過掛載共享容器實現資料共享
容器直接掛載共享目錄
資源列表
準備2個tomcat容器:
tomcat8000
tomcat8001
詳細步驟
建立共享資料
建立共享目錄:mkdir -p /usr/local/docker/volumn/pages/
在共享目錄中增加共享檔案: index.html,內容如下我是一個volumn 共享目錄 albk!
建立
tomcat8000
和tomcat8001
docker run -d --name tomcat8000 -p 8000:8080 -v /usr/local/docker/volumn:/usr/local/tomcat/webapps tomcat
docker run -d --name tomcat8001 -p 8001:8080 -v /usr/local/docker/volumn:/usr/local/tomcat/webapps tomcat
啟動容器時將宿主機的
/usr/local/docker/volumn
目錄,掛載到tomcat容器的/usr/local/tomcat/webapps
這個目錄,這樣就可以實現資料共享驗證容器是否正常啟動
docke ps
docker exec -it a05a987b6da0 /bin/bash
檢視一下webapps目錄下,是否掛載成功
- 瀏覽器訪問
http://宿主機ip:8000/pages/index.html
http://宿主機ip:8001/pages/index.html
- 修改共享檔案
echo "我是一個volumn 共享目錄 albk! 被修改了" > index.html
- 瀏覽器再次驗證
可以看到我們修改的內容,已經實時生效了,不需要重新部署tomcat容器,但是這樣實現每次容器啟動的時候,引數會很長,很容易出錯,在叢集較小的時候可以這樣,但是規模大的時候,這也是不少的工作量,下面我們看一下另一種方法
共享容器掛載
- 建立一個共享容器
webpages
,通過上述的方法,使用-v 掛載共享目錄
docker create --name webpages -v /usr/local/docker/volumn/pages:/usr/local/tomcat/webapp tomcat /bin/true
掛載共享容器
docker run --name tomcat8000 -d -p 8000:8080 --volumes-from webpages tomcat
docker run --name tomcat8001 -d -p 8001:8080 --volumes-from webpages tomcat
驗證過程和上面的一樣,容器webpages實際作用就是定義了一個掛載點,修改內容的時候,只需要修改共享容器的共享目錄即可
總結
如果容器少的話用-v
如果容器多的話, 可以使用-volumes-from
本質與-v是一樣的,具體使用哪個根據實際情況而定
寫在最後
相關文章會首發公眾號,可以關注公號albk,關注後可以獲取大量學習視訊
期望熱愛技術的你一起來交流,獲取最新資料和學習資源,可以關注公眾號albk, 個人部落格 !