docker部署Web專案(二)
阿新 • • 發佈:2018-12-26
上一篇中極其簡略的介紹如何利用docker部署web專案,思路是pull Linux映象後,在此映象的容器中部署web容器執行環境,然後利用此容器重新生成自己映象。方法是可行的,會發現生成自己的映象非常大。這篇文章主要介紹如果利用不同的容器共同構成專案部署環境。
首先介紹docker中三個基本概念:
倉庫:Docker倉庫(Repository)類似與程式碼倉庫,是Docker集中存放映象檔案的場所。
映象:Docker映象(Image)類似於虛擬機器的映象,可以將他理解為一個面向Docker引擎的只讀模板,包含了檔案系統。
容器:Docker容器(Container)類似於一個輕量級的沙箱子(因為Docker是基於Linux核心的虛擬技術,所以消耗資源十分少),Docker利用容器來執行和隔離應用。
以上名詞解釋均來自網路,理解這三個概念至關重要。
- 首先pull,tomcat、mysql映象到本地
docker pull hub.c.163.com/library/tomcat:latest
docker pull hub.c.163.com/library/mysql:latest
利用docker建立網路
docker run 建立 Docker 容器時,可以用 –net選項指定容器的網路模式,Docker 有以下 4 種網路模式:- host 模式
- container 模式
- none 模式
- bridge 模式
後來提供了docker network create直接建立網路(老版本不支援),不需要再用其他工具來為容器分配網路。下面就用docker建立網路方式來為容器指定ip,方便容器間通訊。
docker network create --subnet 192.168.31.0/24 --gateway 192.168.31.1 network0
通過
sudo docker network ls
發現網路network0已經被建立,在宿主機上用ifconfig也可以檢視到,名稱可能不同。建立容器並指定IP
建立mysql容器,並且命名、對映宿主機埠、指定IP、設定root密碼、建立資料庫、以bash方式互動執行: sudo docker run -d -p 3366:3306 --name mysql --net network0 --ip 192.168.31.10 -e MYSQL_ROOT_PASSWORD=123456
上面建立的容器mysql、tomcat處於同一網段下,可以通訊。以上建立容器時引數設定,請參考映象文件。 對映宿主機埠號,外界訪問時,指向容器中的服務,而且通過工具可以連線容器中的資料庫,進行操作。
- 通過Dockerfile生成映象
以上只是建立好了容器,但是tomcat中並沒有部署專案,利用Dockerfile可以幫助生成新的映象。思路大概是:
- 把web的war包或者webapp下的檔案放入tomcat下webapp/下
- 重新生成映象
- 生成容器
- 啟動服務
新建Dockerfile檔案:
from hub.c.163.com/library/tomcat
MAINTAINER diy_os [email protected]
COPY web.war /usr/local/tomcat/webapps
把war包放在同一目錄下,執行sudo docker build -t ImageName:version .
即可。
更多文章請關注微信公眾號: