CentOS上使用Dockers搭建Tomcat服务器

CentOS上使用Dockers搭建Tomcat服务器-Luninousail ' Blog

一直想着搭建一个自己的Web应用服务器,但服务器的80端口已经被我的博客系统占用了,服务器是CentOS,没有UI界面,完全依靠命令行来进行操作,再加上之前对Linux其实不怎么熟,下意识就觉得手写命令改端口好麻烦,就暂时搁置了。

最近突然想起服务器上装的是Docker,Docker自带端口映射功能,那就好办了,直接用Docker拉取Tomcat做端口映射就好了。

这里简单介绍一下Docker和Tomcat,Docker是一个开源的应用容器引擎,开发者可以把任何应用和应用所需要的依赖一起打包成容器,其他人使用的时候只要把这个容器下载回来,直接运行即可,其方便之处在于运行应用只需下载-运行,免去了四处安装各种依赖包的麻烦,做到了开箱即用,非常方便。

CentOS上使用Dockers搭建Tomcat服务器-Luninousail ' Blog

Tomcat是一个开源的Web应用服务器,可用来部署开发者自己的Web应用,我们平时所能看到的H5、网页、网上商城、OA系统等,都需要先部署到Tomcat这样的Web服务器才能被访问到,甚至可用来为小程序、APP、桌面应用等程序提供数据,功能强大?。

CentOS上使用Dockers搭建Tomcat服务器-Luninousail ' Blog

正式安装

一、使用Docker下载Tomcat容器

Docker的安装很简单,之前在用Docker搭建Wordpress博客系统的文章中有写,这里就不赘述了。在成功安装Docker后,我们可用直接使用命令:

docker pull tomcat

系统会自动拉取最新版本的Tomcat容器。

CentOS上使用Dockers搭建Tomcat服务器-Luninousail ' Blog
成功界面

之后使用命令:

docker images

可以发现,我们的Docker仓库中已经有了最新版本的tomcat容器了。

CentOS上使用Dockers搭建Tomcat服务器-Luninousail ' Blog
CentOS上使用Dockers搭建Tomcat服务器-Luninousail ' Blog

二、在Docker中运行Tomcat容器并挂载本地目录

有了容器,我们直接运行就可以了,这就是开箱即用的便利性。使用命令:

docker run --name tomcat-service -d -p 8080:8080 -v $PWD/mydata:/usr/local/tomcat/webapps/mydata tomcat

运行Tomcat容器,并将当前目录下的mydata目录挂载到Tomcat容器中的webapps目录下,因为Docker采用的是完全沙箱机制,不同容器间是相互独立的,与宿主系统也是相对独立的,所以在宿主系统中无法直接访问容器内的目录,需要使用docker命令进入容器内部才能进行操作,为了避免使用上的不便,我们需要把本地目录挂载到容器内,这样就可以直接对容器内部的目录进行操作。

CentOS上使用Dockers搭建Tomcat服务器-Luninousail ' Blog

另外这里解释几个参数:

--name :给容器运行后起个名称;

-d: 后台运行容器,并返回容器ID;

-p: 指定端口映射,格式为:主机(宿主)端口:容器端口

--volume , -v: 挂载目录,格式为:主机(宿主)目录:容器目录

$PWD: 当前目录;

这时如果运行成功的话,我们再使用命令:

docker ps -a

就会发现Tomcat容易已经成功运行了。

CentOS上使用Dockers搭建Tomcat服务器-Luninousail ' Blog
CentOS上使用Dockers搭建Tomcat服务器-Luninousail ' Blog

三、解决无法访问报404的错误

到这里,其实Tomcat已经安装完毕了,但是如果我们试着访问相应的地址和端口,就会发现浏览器会返回一个404资源未找到的错误,并不能访问到Tomcat服务器。

CentOS上使用Dockers搭建Tomcat服务器-Luninousail ' Blog

这是为什么呢,我们来一点一点分析,首先Tomcat肯定是安装成功的,不然错误页面底端也不会出现Apache Tomcat的字样。

那么会不会是容器内的文件出了什么错误呢?于是我使用命令:

docker exec -it 2d /bin/bash
cd webapps

进入Tomcat的应用目录,发现了一个惊天大秘密。

原来里面

除了我挂载的本地目录外什么都没有

CentOS上使用Dockers搭建Tomcat服务器-Luninousail ' Blog

这时候我上网查了资料,得到结论:这个版本的Tomcat把自带的应用放到了同目录的webapps.dist下,并没有放到webapps下,所以里面才会什么都没有。

找到原因就好解决了,只要把自带的应用copy到webapps目录下即可,使用命令:

cp -r webapps.dist/. webapps
cd webapps
ls

就会发现全部的应用都已经被拷贝进来了,这时我们再访问相应的地址和端口,就会发现Tomcat已经可以顺利访问到了。

CentOS上使用Dockers搭建Tomcat服务器-Luninousail ' Blog
CentOS上使用Dockers搭建Tomcat服务器-Luninousail ' Blog

本文系作者 @ 原创发布在 Luninousail ' Blog。未经许可,禁止转载。

喜欢()
评论 (0)
183 文章
4 评论
17 喜欢
Top