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應用”的流程完全一致。