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容器部署核心知识点
- 镜像与容器:
docker pull tomcat
获取镜像,docker run
基于镜像创建容器(一个镜像可创建多个容器); - 端口映射:
-p 主机端口:8080
是外部访问的关键(Tomcat默认端口8080); - 目录挂载:
-v 主机目录:/usr/local/tomcat/webapps/ROOT
实现网页自定义,主机修改实时生效; - 默认路径:Tomcat的默认首页目录是
/usr/local/tomcat/webapps/ROOT
,需挂载到此路径才能覆盖默认页面。
通过以上步骤,我们从“基础运行”到“自定义访问”,完整掌握了Tomcat在Docker中的部署逻辑,这与实际生产中“容器化部署Web应用”的流程完全一致。