八、上传web项目并启动docker的tomcat服务

八、上传web项目并启动docker的tomcat服务

1、Centos7使用 yum 安装docker

#查看你当前的内核版本
uname -r
#安装 Docker
yum -y install docker-io

2、启动 Docker 后台服务

service docker start

3、上传项目到/docker/resource/ 目录(只是一个springboot的demo应用测试)

[root@iz2zecm4ndtkaue32tynx5z resource]# pwd  
/docker/resource
[root@iz2zecm4ndtkaue32tynx5z resource]# ls 
taobao-v1.0.war
[root@iz2zecm4ndtkaue32tynx5z resource]# 

2、以交互模式启动容器(检查一下tomcat的安装位置):

docker run -it --name mytomcat -p 1082:8080 tomcat:8 /bin/bash

进入容器后,查看tomcat安装路径

find / -name *tomcat*

 

[root@iz2zecm4ndtkaue32tynx5z resource]# docker exec -it mytomcat /bin/bash
root@31dfa63eae1f:/usr/local/tomcat# find / -name *tomcat*
/usr/local/tomcat                
/usr/local/tomcat/conf/tomcat-users.xml
/usr/local/tomcat/conf/tomcat-users.xsd
/usr/local/tomcat/webapps/manager/images/tomcat.gif
/usr/local/tomcat/webapps/docs/images/tomcat.png
/usr/local/tomcat/webapps/docs/images/tomcat.svg
/usr/local/tomcat/webapps/docs/images/tomcat.gif
/usr/local/tomcat/webapps/docs/appdev/sample/web/images/tomcat.gif
/usr/local/tomcat/webapps/host-manager/images/tomcat.gif
/usr/local/tomcat/webapps/ROOT/tomcat.png
/usr/local/tomcat/webapps/ROOT/tomcat.svg
/usr/local/tomcat/webapps/ROOT/tomcat.gif
/usr/local/tomcat/webapps/ROOT/tomcat.css
/usr/local/tomcat/webapps/ROOT/tomcat-power.gif
/usr/local/tomcat/bin/tomcat-juli.jar
/usr/local/tomcat/lib/tomcat-websocket.jar
/usr/local/tomcat/lib/tomcat-jni.jar
/usr/local/tomcat/lib/tomcat-dbcp.jar
/usr/local/tomcat/lib/tomcat-api.jar
/usr/local/tomcat/lib/tomcat-util.jar
/usr/local/tomcat/lib/tomcat-i18n-es.jar
/usr/local/tomcat/lib/tomcat-coyote.jar
/usr/local/tomcat/lib/tomcat-util-scan.jar
/usr/local/tomcat/lib/tomcat-i18n-fr.jar
/usr/local/tomcat/lib/tomcat-i18n-ja.jar
/usr/local/tomcat/lib/tomcat-jdbc.jar
find: ‘/proc/1/map_files’: Operation not permitted
find: ‘/proc/51/map_files’: Operation not permitted
find: ‘/proc/84/map_files’: Operation not permitted
find: ‘/proc/93/map_files’: Operation not permitted
find: ‘/proc/97/map_files’: Operation not permitted
root@31dfa63eae1f:/usr/local/tomcat# 

根据内容得知tomcat的根目录:/usr/local/tomcat/ ,项目的部署目录就应该是: /usr/local/tomcat/webapps/

 前边已经通过命令将项目上传到/docker/resource/目录,可以通过如下命令重新启动一个容器:

两种部署web项目到docker的方式:

第一种部署方法,启动镜像时需要挂载目录到本地:

docker run -i -t -v /docker/resource:/usr/local/tomcat/webapps/ 53a0016cd0ba /bin/bash

进入系统内部:

docker exec -it 53a0016cd0ba /bin/bash

可以看到:

root@53a0016cd0ba:/tmp/mesos-sandbox# 

新建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 .即可。

web项目跟进宿主机的本地挂载目录

docker run -d --name=mytomato03 -it -v /docker/resource/:/usr/local/tomcat/webapps/ -p 2080:8080 tomcat:8

 

宿主机上查看监听端口:

[root@iz2zecm4ndtkaue32tynx5z resource]# netstat -tunlp | grep 2080
tcp6       0      0 :::2080                 :::*                    LISTEN      13406/docker-proxy-
[root@iz2zecm4ndtkaue32tynx5z resource]# 

说明一下几个参数的含义:

 -t (tcp) 仅显示tcp相关选项
     -u (udp)仅显示udp相关选项
     -n 拒绝显示别名,能显示数字的全部转化为数字
     -l 仅列出在Listen(监听)的服务状态
     -p 显示建立相关链接的程序名

浏览器访问页面:

 

 

基于正在运行的容器创建新的镜像image:

docker commit 容器ID 自定义镜像名称

 

[root@iz2zecm4ndtkaue32tynx5z resource]# docker commit ab5efb23746f mytomcat-09           
sha256:11c720a2f77e4ed5ebde7be027075bf41383f080d27122144ca55bb16bb2c84e
[root@iz2zecm4ndtkaue32tynx5z resource]# 

 二、通过Dockerfie制作镜像文件方式打包jdk+tomcat

将自己的javaweb项目与docker结合

1、准备jdk+tomcat软件

材料:

1、jdk:jdk-8u141-linux-x64.tar.gz

2、tomcat:apache-tomcat-8.5.32.tar.gz

 wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.32/bin/apache-tomcat-8.5.32.tar.gz

3、web测试项目:taobao-v1.0.war

4、Dockerfie文件: Dockerfile

2、步骤:

2.1、存储于Linux机器的本地目录/docker/resource下(利用CRT上传)。

2.2、利用linux命令解压jdk和tomcat

  tar -zxvf  待解压文件

#解压jdk
tar -zxvf jdk-8u141-linux-x64.tar.gz
#解压tomcat
tar -zxvf apache-tomcat-8.5.32.tar.gz

2.3、然后重命名两个文件夹为jdk和tomcat方便下一个步骤。

  mv 源文件 目标文件

#改名jdk
mv jdk1.8.0_141 jdk
#改名tomcat
mv apache-tomcat-8.5.32 tomcat

jiang项目taobao-v1.0.war解压放到tomcat目录webapps/下

#unzip -d 指定目录,建议加上此命令,不加-d会散包解压
unzip -oq taobao-v1.0.war -d tomcat/webapps/taobao-v1.0

 

编写Dockerfile文件​​

#---------------------------------------------------------------------
#This is a comment注释
#使用基础镜像centos ,本地没有回自动去docker上下载
FROM centos
#指定镜像创建者信息
MAINTAINER tonny <<A href="mayun@51cto.com">88888888@163.com>
#切换镜像的目录,进入/usr目录(基础镜像是一个linux系统,可参照linux查看相应目录)
WORKDIR /usr
#在/usr/下创建java目录,用来存放jdk
RUN mkdir java
#切换镜像的目录至/usr/java
WORKDIR /usr/java
#在/usr/java下创建jdk目录,用来存放jdk文件
RUN mkdir jdk
#切换镜像的目录至/usr/java/jdk
WORKDIR /usr/java/jdk
#将宿主机的jdk目录下的全部文件考入至镜像的/usr/java/jdk目录下
ADD jdk /usr/java/jdk
#切换镜像的目录至/opt
WORKDIR /opt
#在/opt下创建tomcat目录,用来存放tomcat文件
RUN mkdir tomcat
#将宿主机的tomcat目录下的全部文件考入至镜像的/opt/tomcat目录下
ADD tomcat /opt/tomcat
#设置环境变量
ENV JAVA_HOME=/usr/java/jdk
ENV JAVA_BIN=/usr/java/jdk/bin
ENV PATH=$PATH:$JAVA_HOME/bin
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#设置容器启动时执行的操作
CMD /opt/tomcat/bin/catalina.sh run
#---------------------------------------------------------------------

上面就是文件的具体内容,每行代码都写有注释,将这个文件放在刚刚解压jdk和tomcat的同级目录。

 3、制作基础镜像

使用命令:docker build -t base_server:latest .
其中base_server为镜像名称,latest为镜像tag。
[root@iz2zecm4ndtkaue32tynx5z resource]# docker build -t base_server:latest .
制作成功后,查看镜像:docker images
[root@iz2zecm4ndtkaue32tynx5z resource]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
base_server         latest              d638ded2e9be        20 seconds ago      610 MB
docker.io/centos    latest              49f7960eb7e4        8 weeks ago         200 MB
[root@iz2zecm4ndtkaue32tynx5z resource]#

 

注意:1.文件名不能有大写字母,需要的话用下划线分开。

2.语句的最后空格加上句号,代表在当前目录的文件夹下面进行此操作。

三、启动容器

使用命令:docker run -d -p 5050:8080 base_server:latest
  -d:表示以“后台模式”启动,此时 Tomcat 控制台不会出现在输出终端上。
  -p:表示宿主机与容器的端口映射,此时将容器内部的 8080 端口映射为宿主机的 5050 端口,这样就向外界暴露了 5050 端口,可通过 Docker 网桥来访问容器内部的 8080 端口了。
  --name:表示容器名称,用一个有意义的名称命名即可。
四、测试访问:ip+宿主机端口

 五、测试访问项目页面:

 六、将创建好的镜像上传到docker hub仓库

为存在于本地的镜像打标签,命令如下:
docker tag <existing-image> <hub-user>/<repo-name>[:<tag>]
这里的tag不指定就是latest。 

push镜像,命令如下: docker push <hub-user>/<repo-name>:<tag>

通过命令拉取一下镜像看看是否成功。命令如下:
docker pull <hub-user>/<repo-name>:<tag>

 

posted @ 2018-11-20 23:02  神码是浮云  阅读(1421)  评论(0编辑  收藏  举报