> 技术文档 > Docker实战:Tomcat容器从部署到自定义网页的完整操作

Docker实战:Tomcat容器从部署到自定义网页的完整操作


Docker实战:Tomcat容器从部署到自定义网页的完整操作

继Nginx容器部署后,我们再来实操Tomcat容器的使用——从拉取镜像、启动容器,到端口映射、网页挂载,全程通过实际命令演示,带你掌握Tomcat在Docker中的核心用法。

一、拉取Tomcat镜像:容器的“基础模板”

和所有Docker应用一样,使用Tomcat需先获取对应镜像。通过docker pull命令从官方仓库拉取最新版Tomcat:

[root@localhost opt]# docker pull tomcat Using default tag: latest # 默认拉取latest标签(最新版)latest: Pulling from library/tomcat # 从官方库拉取# 省略拉取过程(显示各层镜像下载进度)Digest: sha256:52a7c268ce41e6717ca94a57f1afdf355e769d7b0a5424a0e1315a # 镜像校验值Status: Downloaded newer image for tomcat:latestdocker.io/library/tomcat:latest # 拉取成功,镜像路径确认

拉取完成后,用docker images查看本地镜像,确认Tomcat已存在:

[root@localhost opt]# docker imagesREPOSITORY TAG IMAGE ID CREATED nginx latest 22bd15417453 8 days agotomcat latest 9ca267cc83c7 2 weeks ago # 已成功拉取Tomcat镜像centos 7 eeb6ee3f44bd 3 years ago

二、启动基础Tomcat容器:验证镜像可用性

拉取镜像后,先启动一个基础容器,验证Tomcat能否正常运行:

# 启动Tomcat容器(-d后台运行,--rm容器停止后自动删除,用于临时测试)[root@localhost opt]# docker run -d --rm tomcat05615791b7f44d3ec6d9fd19bf912591ead196193dee6eb41fb274 # 返回容器ID,创建成功# 查看容器状态(确认是否运行)[root@localhost opt]# docker ps -a CONTAINER ID IMAGE  COMMAND CREATED STATUS PORTS NAMES05615791b7f4 tomcat:latest \"catalina.sh run\" 5 seconds ago Up 4 seconds 8080/tcp dazzling_blackburn
  • 关键信息:Tomcat默认在容器内8080端口运行(PORTS列显示8080/tcp),启动命令为catalina.sh run(Tomcat官方启动脚本)。

三、访问Tomcat服务:从容器IP到端口映射

1. 通过容器IP访问(仅限主机内部)

Tomcat启动后,先通过容器内部IP测试服务是否可用:

# 查看容器IP(通过inspect过滤IPAddress)[root@localhost opt]# docker inspect 056 | grep IPAddress \"IPAddress\": \"172.17.0.2\", # 容器IP为172.17.0.2# 访问容器内Tomcat(需指定8080端口)[root@localhost ~]# curl http://172.17.0.2:8080# 输出结果:返回Tomcat的404页面(正常,默认无首页文件)<!doctype html><html lang=\"en\"><head><title>HTTP Status 404 – Not Found</title>...
  • 说明:返回404是因为Tomcat默认webapps/ROOT目录下无index.html,但能收到响应,说明服务已正常运行。

2. 通过端口映射实现外部访问(核心)

容器IP仅主机内部可见,若需通过浏览器等外部工具访问,需配置端口映射(将主机端口与容器8080端口绑定):

# 创建带端口映射的Tomcat容器(主机8080→容器8080)[root@localhost ~]# docker run -d -p 8080:8080 tomcat:latestb4fff5badcc9f55e66ed4f2d61b14c907f52da173a554a378cc78b # 容器创建成功# 查看端口映射状态[root@localhost ~]# docker ps -aCONTAINER ID IMAGE  COMMAND PORTS NAMESb4fff5badcc9 tomcat:latest \"catalina.sh run\" 0.0.0.0:8080->8080/tcp mystifying_gauss
  • 作用:外部访问主机IP:8080时,请求会自动转发到容器内的Tomcat服务(无需记住容器IP)。

四、自定义Tomcat首页:通过目录挂载同步网页

和Nginx一样,Tomcat的网页内容也可通过“目录挂载”在主机上管理,无需进入容器。

1. 创建挂载目录并编写首页文件

# 创建主机存放Tomcat网页的目录[root@localhost ~]# mkdir -p /opt/tomcat_web# 进入目录,创建首页文件index.html[root@localhost ~]# cd /opt/tomcat_web/[root@localhost tomcat_web]# vim index.html # 写入简单内容[root@localhost tomcat_web]# cat index.html <h1>This is Tomcat</h1>

2. 创建带目录挂载的Tomcat容器

将主机/opt/tomcat_web/目录挂载到Tomcat默认网页目录(/usr/local/tomcat/webapps/ROOT),并映射到主机8081端口(避免与之前的8080端口冲突):

[root@localhost ~]# docker run -d -p 8081:8080 -v /opt/tomcat_web/:/usr/local/tomcat/webapps/ROOT tomcat:latest 87384d6a89d1d4752597e30e4672b0d71089206a08c40d256cf9cfe229420cac # 容器创建成功
  • 挂载逻辑
    主机/opt/tomcat_web/ → 容器/usr/local/tomcat/webapps/ROOT(Tomcat默认读取ROOT目录下的index.html作为首页)。

3. 验证自定义首页效果

通过主机8081端口访问,此时Tomcat会显示我们在主机编写的index.html

# 本地curl测试[root@localhost tomcat_web]# curl http://localhost:8081<h1>This is Tomcat</h1> # 成功返回自定义内容
  • 优势:后续修改/opt/tomcat_web/index.html(比如添加段落),无需重启容器,刷新页面即可看到最新内容(挂载目录实时同步)。

五、总结:Tomcat容器部署核心知识点

  1. 镜像与容器docker pull tomcat获取镜像,docker run基于镜像创建容器(一个镜像可创建多个容器);
  2. 端口映射-p 主机端口:8080是外部访问的关键(Tomcat默认端口8080);
  3. 目录挂载-v 主机目录:/usr/local/tomcat/webapps/ROOT实现网页自定义,主机修改实时生效;
  4. 默认路径:Tomcat的默认首页目录是/usr/local/tomcat/webapps/ROOT,需挂载到此路径才能覆盖默认页面。

通过以上步骤,我们从“基础运行”到“自定义访问”,完整掌握了Tomcat在Docker中的部署逻辑,这与实际生产中“容器化部署Web应用”的流程完全一致。