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

发布于:2025-07-26 ⋅ 阅读:(18) ⋅ 点赞:(0)

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:latest
docker.io/library/tomcat:latest  # 拉取成功,镜像路径确认

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

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

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

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

# 启动Tomcat容器(-d后台运行,--rm容器停止后自动删除,用于临时测试)
[root@localhost opt]# docker run -d --rm tomcat
05615791b7f44d3ec6d9fd19bf912591ead196193dee6eb41fb274  # 返回容器ID,创建成功

# 查看容器状态(确认是否运行)
[root@localhost opt]# docker ps -a 
CONTAINER ID   IMAGE           COMMAND         CREATED         STATUS         PORTS      NAMES
05615791b7f4   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:latest
b4fff5badcc9f55e66ed4f2d61b14c907f52da173a554a378cc78b  # 容器创建成功

# 查看端口映射状态
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE           COMMAND         PORTS                             NAMES
b4fff5badcc9   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应用”的流程完全一致。


网站公告

今日签到

点亮在社区的每一天
去签到