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用來自定義名稱...