基于Docker里的运行的tomcat容器进行部署Java Web项目详解

引言:在centos-7环境装了docker后,通过docker创建一个tomcat容器,想部署Java web项目,结果就是找不到tomcat 容器的的webapps目录,导致部署不了项目,不过后来还是解决了,在这里我将进行详解,希望能给大家指一条明路。

后来发现原来tomcat容器的webapps目录只有通过进入到tomcat容器里才能找到webapps目录,把war.文件部署进去,重启一下docker的服务(不用重启貌似也可以),就可以自动解压war文件。


docker基础操作须知:

镜像:应用程序所依赖的操作环境和配置形成的模板,用面向对象的话来说简称类

容器:通过镜像来运行容器,容器相当于类的实例。

常用命令大全:

ip addr/ip link/ ifconfig:查看宿主机里ip地址(宿主机表示是虚拟机)

systemctl start docker/service start docker:启动docker服务

systemctl stop docker:关闭docker服务

service iptables start:启动防火墙

service iptables restart:重启防火墙

service iptables stop:关闭防火墙

docker run:启动container

扫描二维码关注公众号,回复: 2978923 查看本文章

docker seach xxxx(镜像名称):检索镜像

docker pull xxx(镜像名称):拉取镜像

docker images:列出镜像

docker  --version:查看docker的版本信息

[root@localhost  ~]:家目录

[root@localhost  /]:根目录

docker exec Container Id:进入容器

docker exec -it NAMES(自定义名称) /bin/bash:进入--name命名的容器

docker exec NAMES(容器的自定义名称)-it bash:进入容器里进行操作

docker attach Container Id:进入到容器的终端

docker inspect IMAGE ID:显示容器或镜像的元数据

[root@(container id)]:比如[root@24527d42d3eb]表示已进入docker里的一个CONTAINER ID的容器内部

[root@24527d42d3eb]:exit(从容器里退出)。

docker ps:查看docker里运行的容器(status为Up....表示运行中)

docker ps -a:查看docker里已停止或正在运行的容器(status为Exit)

docker start CONTAINER ID   :如果容器的状态为Exit,用它来启动容器

docker stop CONTAINER ID   :停止正在运行的容器,删除一个容器必须先要停止

docker restart :当部署web项目的war文件,到tomcat里的webapps里面了,重启一下docker服务,就自动解压了war文件

docker rm CONTAINER ID :删除容器

docker rm $(docker ps -a -q):删除所有已停止的容器;

docekr rmi IMAGE ID:删除镜像

rm -rf xxxx:强制删除某个war.文件或目录、文件

docker cp /xxx.war CONTAINER ID   :/usr/local/tomcat/webapps:从/根目录复制一个打包后的Java web war文件 到tomcat容器里的webapps工作目录里

docker exec CONTAINER ID   ls /usr/local/tomcat:默认的 安装tomcat镜像的webapps目录

docker run -name xxx -p  (自定义端口号,用来访问的):(容器的端口号:比如tomcat的8080,mysql的3306) -d docker.io/tomcat(镜像名称):表示在docker里运行一个tomcat容器,如果没有镜像,自动pull一个tomcat的镜像

--name 为容器取一个名字

-p 容器要映射的端口号

-d:后台运行

-t:进入终端

-i:获得一个交互式的连接,通过获取container的输入

/bin/bash:在container中启动一个bash shell

举例:docker run --name tomcat -p 8081:8080 -d tomcat


1、基于centOs-7环境,安装docker(集装箱)后,查看docker的版本信息;

[root@localhost ~]# docker --version
Docker version 1.13.1, build 6e3bb8e/1.13.1

2、通过命令docker images查看容器的镜像docker pull tomcat 获取tomcat镜像,或者直接通过docker run --name tomcat -p 8081:8080 -d tomcat 直接运行tomcat 容器,然后通过 docker ps 查看已在docker里运行的tomcat容器

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
94091aa5df5e        docker.io/tomcat    "catalina.sh run"        4 hours ago         Up 2 minutes        0.0.0.0:8081->8080/tcp   tomcat

说明:

-p 表示端口号,前一个8080是指我们访问tomcat时的端口号, 后一个8080是tomcat启动的一个容器在docker中运行的端口号, 指定端口号为了更明确的访问tomcat。 tomcat:last last是指定的tomcat的标签,相同的镜像可以指定不同的标签以做区分。

3.docker里的tomcat容器部署后,我们通过ip地址进行访问,通过命令ifconfig进行查看ens33的ip地址即虚拟机的ip地址,在谷歌浏览器里输入:192.168.159.139:8081(有的浏览器不支持,大家注意,输入地址后找不到页面,记住多用几个浏览器试一下)进行访问,看到tomcat欢迎页面,说明你的tomcat已经部署成功!

docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 0.0.0.0
        inet6 fe80::42:8fff:fe90:895f  prefixlen 64  scopeid 0x20<link>
        ether 02:42:8f:90:89:5f  txqueuelen 0  (Ethernet)
        RX packets 785  bytes 485695 (474.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 966  bytes 101710 (99.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.159.130  netmask 255.255.255.0  broadcast 192.168.159.255
        inet6 fe80::65ae:9fa1:2bc7:506a  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:57:6d:76  txqueuelen 1000  (Ethernet)
        RX packets 145904  bytes 161275132 (153.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 29047  bytes 3307584 (3.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 



4、我们把一个写好的Java web项目Export-->war-->Finish文件到一个桌面目录里,然后把它上传到centOs宿主机里,可以借助工具crt,或者挂在u盘的方式把它copy到[root@localhost ~]:/根目录下,可以看到我上传了3个web项目,这时我们使用docker ps 查看一下docker 里正在运行的tomcat容器,当然我运行了两个tomcat容器,你可以把上传的war文件部署到两个web容器里,当然部署一个也可以,通过命令:docker cp /xxx.war CONTAINER ID :/usr/local/tomcat/webapps,这样你就成功的把项目部署到里面了,然后使用docker restart命令自动把war文件解压。然后在浏览器里输入http://ip:8080或8081就可以访问到了。


[root@localhost ~]# ls /
bin   dev  first.war  lib    media  mytest1  nginx-1.6.2  proc  run   srv  tmp              two.war  var
boot  etc  home       lib64  mnt    mytest2  opt          root  sbin  sys  tracingfood.war  usr

[root@localhost ~]# docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
020fbd72fe95        tomcat              "catalina.sh run"   14 seconds ago      Up 13 seconds       0.0.0.0:8081->8080/tcp   tomcat2
8dd6a2a72f76        tomcat              "catalina.sh run"   32 seconds ago      Up 31 seconds       0.0.0.0:8080->8080/tcp   tomcat1


5、有人找不到tomcat容器的部署目录webapps,我们首先进入到容器里面,通过命令docker exec tomcat1 -it bash进入容器才能找到/usr/loca/tomcat/webapps这个目录,把上传到centOs根目录下的tracingfood.war文件,使用命令docker cp /tracingfood.war NAMES/CONTAINAER ID /usr/local/tomcat/webapps,进行部署过去,然后通过命令docker exe CONTAINER ID ls /usr/local/tomcat/webapps进行查看部署的项目。


[root@localhost ~]# ls  /

bin   dev  first.war  lib    media  mytest1  nginx-1.6.2  proc  run   srv  tmp              two.war  var
boot  etc  home       lib64  mnt    mytest2  opt          root  sbin  sys  tracingfood.war  usr

[root@localhost ~]# docker exec -it tomcat1 bash
root@8dd6a2a72f76:/usr/local/tomcat# ls
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  README.md  RELEASE-NOTES  RUNNING.txt  bin  conf  include  lib  logs  native-jni-lib  temp  webapps  work
root@8dd6a2a72f76:/usr/local/tomcat# cd webapps
root@8dd6a2a72f76:/usr/local/tomcat/webapps# ls
ROOT  docs  examples  host-manager  manager  tracingfood  tracingfood.war
root@8dd6a2a72f76:/usr/local/tomcat/webapps# mkdir ./tracingfood ./tarcingfood.war
mkdir: cannot create directory ‘./tracingfood’: File exists
root@8dd6a2a72f76:/usr/local/tomcat/webapps# rm -rf ./tracingfood ./tarcingfood.war
root@8dd6a2a72f76:/usr/local/tomcat/webapps# ls
ROOT  docs  examples  host-manager  manager  tracingfood.war
root@8dd6a2a72f76:/usr/local/tomcat/webapps# ls
ROOT  docs  examples  host-manager  manager  tracingfood  tracingfood.war
root@8dd6a2a72f76:/usr/local/tomcat/webapps# rm -rf tracingfood tracingfood.war
root@8dd6a2a72f76:/usr/local/tomcat/webapps# ls
ROOT  docs  examples  host-manager  manager
root@8dd6a2a72f76:/usr/local/tomcat/webapps# exit
exit



 

6、以下是效果图,输入http:192.168.159.130:8081/tracingfood/usrlogin.jsp,可以访问没问题,当然我下面的这个效果图访问的是8080,那是因为部署在这是另一台tomcat1容器上了,它容器的端口号是8080,映射的宿主机端口也是8080。


7、如有错误欢迎提出,希望能帮助大家,如果觉得我写的不错,请多多鼓励哦,


                                     


             


猜你喜欢

转载自blog.csdn.net/liqz666/article/details/82180581
今日推荐