docker部署web应用
1、创建dockerfile
#使用的基础镜像
FROM mysql:latest
#作者信息
MAINTAINER debian tomcat8 jdk1.8 mysql5.7
#创建目录
RUN mkdir -p /opt/app/jdk1.8.0_65
#把当前soft目录下的jdk文件夹添加到镜像
ADD soft/jdk1.8.0_65 /opt/app/jdk1.8.0_65
#创建tomcat目录
RUN mkdir -p /opt/app/apache-tomcat-8.0.30
#把当前soft目录下的tomcat文件夹添加到镜像
ADD soft/apache-tomcat-8.0.30 /opt/app/apache-tomcat-8.0.30
#添加环境变量
ENV JAVA_HOME /opt/app/jdk1.8.0_65
ENV CATALINA_HOME /opt/app/apache-tomcat-8.0.30
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
#暴露8080端口
EXPOSE 8080
#启动时运行tomcat
CMD ["/opt/app/apache-tomcat-8.0.30/bin/catalina.sh","run"]
2、生成镜像,注意后面的 "."
docker build -t java8-tomcat8-mysql .
镜像创建完毕后,就可以启动docker run来启动镜像,启动镜像的时候同时会创建一个容器,我们可以简单的把镜像比如成类,容器就是这个类的实例
,Image可以理解为一个系统镜像,
Container是Image在运行时的一个状态。如果拿虚拟机作一个比喻的话,Image就是关机状态下的磁盘文件,Container就是虚拟机运行时的磁盘文件,包括内存数据。
当利用docker run来创建容器时,Docker 在后台运行的标准操作包括:
检查本地是否存在指定的镜像,不存在就从公有仓库下载
利用镜像创建并启动一个容器
分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
从地址池配置一个 ip 地址给容器
执行用户指定的应用程序
执行完毕后容器被终止
3、启动镜像
#rule-container是容器的名字 rule:1.0 是镜像
docker run -p 8080:8080 --name rule-container rule:1.0 -d
4、进入容器
docker exec -it ${containername or container id} /bin/bash
5、将war包放进容器
#进入容器后可以找到tomcat路径/opt/app/apache-tomcat-8.0.30
docker cp rule.war rule-containdr:/opt/app/apache-tomcat-8.0.30/webapps
6、停止容器
docker stop 83422eb7f3c1(容器ID)
7、启动容器
docker start 83422
浙公网安备 33010602011771号