docker部署Web项目(二)

上一篇中极其简略的介绍如何利用docker部署web项目,思路是pull Linux镜像后,在此镜像的容器中部署web容器运行环境,而后利用此容器从新生成本身镜像。方法是可行的,会发现生成本身的镜像很是大。这篇文章主要介绍若是利用不一样的容器共同构成项目部署环境。
首先介绍docker中三个基本概念:mysql

仓库:Docker仓库(Repository)相似与代码仓库,是Docker集中存放镜像文件的场所。
镜像:Docker镜像(Image)相似于虚拟机的镜像,能够将他理解为一个面向Docker引擎的只读模板,包含了文件系统。
容器:Docker容器(Container)相似于一个轻量级的沙箱子(由于Docker是基于Linux内核的虚拟技术,因此消耗资源十分少),Docker利用容器来运行和隔离应用。web

以上名词解释均来自网络,理解这三个概念相当重要。sql


  • 首先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 种网络模式:docker

    • 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也能够查看到,名称可能不一样。api

  • 建立容器并指定IPtomcat

    建立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 diy_os@163.com
      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=45f2c5279d958cfcdc96b6c92be0ad96bash