docker掛載本地目錄並映射端口,生產環境中的docker部署方案(多端口多容器)

本文解決兩個問題:

1.如何在啓動docker的時候將本地目錄掛載到docker運行容器中?

2.如何在生產環境中進行docker的部署?部署前相比於傳統的部署方式有哪些優缺點?

開始:

1.如何在啓動docker的時候將本地目錄掛載到docker運行容器中?

在之前的文章中講到過,連接鏡像的命令爲:

#docker run -i -t -v /root/software/:/mnt/software/  --privileged=true  feac5e /bin/bash

而以守護進程的方式啓動命令爲:

#docker run -d -p 58080:8080 --name tomcat1 sdzn.com/tomcat:0.1 /root/run.sh

通過對比可以發現,docker在啓動的最後是用IMAGE_ID/REPOSITORY:TAG並加上需要在容器中運行的命令結束,前面都是加上各種啓動參數,比如端口映射和目錄映射等。

於是輸入這樣的命令:

#docker run -i -t -v /root/software/:/mnt/software/  --privileged=true -d -p 58080:8080 --name tomcat1 sdzn.com/tomcat:0.1 /root/run.sh

發現容器啓動成功,初步證明加入路徑映射對容器啓動是沒有問題的。但是還無法驗證映射是否成功,加入一個測試項目將其映射到鏡像的tomcat/webapps目錄下進行測試。

我們先停止並刪除容器。

在本地的/root/tomcat/webapps下將ROOT改爲ROOT1,其它項目刪除,我們來做映射然後啓動。

#docker run -i -t -v /root/tomcat/webapps/ROOT1/:/opt/tomcat/webapps/ROOT1/  --privileged=true -d -p 58080:8080 --name tomcat1 sdzn.com/tomcat:0.1 /root/run.sh

我們發現這樣是可以訪問的http://127.0.0.1:58080/ROOT1/

2.如何在生產環境中進行docker的部署?部署前相比於傳統的部署方式有哪些優缺點?

通過上述實驗,我們可以考慮打包這樣一個程序包,包中包含:程序發佈的war包/解壓後的tomcat、鏡像文件、啓動腳本。

基本思路是:tomcat作爲外部路徑引入鏡像中運行,日誌什麼的也是記錄到外部的tomcat中進行運行,每個項目一個鏡像文件,當需要增加容器的時候,直接帶參數多啓動一個容器即可,尤其是對於需要動態擴容的服務來說,非常方便。

但同時有一個疑問,對於docker對外提供的服務來講,如果在啓動的時候端口沒有對外提供映射就比較麻煩,所以在啓動的時候需要有嚴格的部署和端口規劃。

可參考以下的多容器多端口映射方案:

http://blog.csdn.net/meegomeego/article/details/50707621



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章