1. 程式人生 > >docker部署Web專案(二)

docker部署Web專案(二)

上一篇中極其簡略的介紹如何利用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
    -e MYSQL_DATABASE=yunweather hub.c.163.com/library/mysql 同樣建立tocat容器: sudo docker run -d -p 8088:8080 --name tomcat --net network0 --ip 192.168.31.11 hub.c.163.com/library/tomcat
    上面建立的容器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 .即可。

更多文章請關注微信公眾號:
https://note.youdao.com/yws/api/personal/file/WEB6c0f1a891fdea03ecc708833e0df9b3b?method=download&shareKey=45f2c5279d958cfcdc96b6c92be0ad96