Docker Volumn容器間共享資料的實現

2022-09-24 18:36:10 字數 2051 閱讀 5800

volume是什麼

volume在英文中是容量的意思, 在docker中是資料卷的意思,是用來儲存資料的容器

為什麼要進行資料共享

在集群中有多台tomcat,對於集群中的tomcat部署的**是同乙份**的副本,如果頁面檔案發生變化,意味著每個容器中的頁面檔案都要進行更新,在大規模的集群中這樣的工作量會被無限放大,這時候就需要用到資料共享解決此問題,所謂資料共享指的是多個容器共享乙個資料副本,在docker環境中我們該如何實現?

資料共享原理

在宿主機的硬碟上開闢乙個空間,用來存放共享的資料,多個容器共享這個目錄

實現資料共享的解決方案

說到資料共享我們其實很容易想到linux中的mount命令,通過掛載一共享目錄來

[x] 使用引數-v 宿主機目錄:/容器內容目錄將共享的檔案放在宿主機的某個檔案中,然後多個容器之前共享這乙個目錄,實現資料共享,這需要在啟動時

[x] 使用引數-v 宿主機目錄:/容器內容目錄共享容器掛載宿主機共享目錄,然後通過掛載共享容器實現資料共享

容器直接掛載共享目錄

資源列表

準備2個tomcat容器:

toruuvcemcat8000tomcat8001

詳細步驟

建立共享資料

建立共享目錄: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

掛載共享容器

www.cppcns.com

docker run --name tomcat8000 -d -p 8000:8080 --volumes-from webpages tomcat

docker run --name tomcat8001 -d -p 80程式設計客棧01:8080 --volumes-from webpages tomcat

驗證過程和上面的一樣,容器webpages實際作用就是定義了乙個掛載點,修改內容的時候,程式設計客棧只需要修改共享容器的共享目錄即可總結

如果容器少的話用-v如果容器多的話, 可以使用-volumes-from本質與-v是一樣的,具體使用哪個根據實際情況而定

本文標題: docker volumn容器間共享資料的實現

本文位址:

容器間互聯 2

overlay跨網互聯 試驗規劃 配置consul環境 docker run d p 8500 8500 h consul name consul progrium consul server bootstrap 修改host1,host2配置 execstart usr bin dockerd h...

Docker 容器間通訊

name 給執行的容器起乙個名字 docker run d name web tomcat 執行centos 必須進入互動介面 it 進入互動模式 docker run d name database it centos bin bash inspect 檢視docker內部原始檔案。docker ...

理解Docker容器連線實現容器間通訊

容器連線 link 系統是除了埠對映外,另一種跟容器中應用互動的方式。其會在源容器 db 與接收容器 web 之間穿件乙個隧道,接收容器可以看到源容器指定的資訊。其實乙個可以將具體的容器連線到一起來進行通訊的抽象層。容器的命名 docker的連線系統會根據容器的名稱來進行連線。name用來自定義名稱...