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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/916271.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/916271.shtml
英文地址,請注明出處:http://en.pswp.cn/news/916271.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用cherry studio離線搭建私人知識庫流程記錄

本篇文章記錄近期嘗試在個人筆記本上、全離線狀態下搭建知識庫的流程。用到的工具包括&#xff1a;Cherry Studio、ollama。主要過程是&#xff1a;首先下載ollama用于管理大模型&#xff1b;然后&#xff0c;從魔塔社區下載需要的deepseek、千問大模型和bge-m3嵌入模型&#x…

【工具類】Linux 環境利用 uv 安裝多版本 python

文章目錄前置工作環境說明如果kali無法訪問網絡pypi 換源安裝 uvuv 寫入環境變量臨時寫入永久寫入無法打開 github 解決方案&#xff08;注意此方法可能也會失效&#xff09;安裝多版本 python查看已安裝的pythonuv python install到 uv 的 github 主頁&#xff0c;找安裝文件下…

求職招聘小程序源碼招聘小程序開發定制

身份&#xff1a;求職者、企業求職者&#xff1a;完善簡歷&#xff0c;簡歷投遞企業&#xff1a;企業入駐&#xff0c;查看簡歷企業會員&#xff1a;半年 、年度 權益&#xff1a;每日發布條數、刷新條數&#xff0c;簡歷下載數量聊天&#xff1a;求職者可以和企業聊天招聘會…

Git 使用全指南:從配置到免密登錄

Git 使用全指南&#xff1a;從配置到免密登錄一、Git 基礎配置二、Git 代碼提交流程2.1 克隆遠程倉庫2.2 創建并切換分支2.3 暫存文件2.4 提交到本地倉庫2.5 拉取遠程最新代碼2.6 推送本地分支到遠程三、VSCode 服務器免密登錄配置3.1 生成 Windows SSH 密鑰3.2 復制公鑰到服務…

組合期權:領式策略

文章目錄0.簡介1.多頭領式策略&#xff08;Long Collar&#xff09;?1.1 策略構成1.2 適用場景?1.3 損益分析1.4 案例示范2.空頭領式策略&#xff08;Short Collar&#xff09;?2.1 策略構成2.2 適用場景2.3 損益分析2.4 案例示范參考文獻0.簡介 領式策略&#xff08;Colla…

ECSPI控制器

目錄 SPI協議簡介 極性與相位 SPI框圖 單字節收發 發送數據流程 接收數據流程 ECSPI控制器 關鍵特性 時鐘源 主機模式 等待狀態 片選控制 單突發傳輸 多突發傳輸 相位控制 ECSPI Memory Map ECSPI寄存器 ECSPIx_RXDATA ECSPIx_TXDATA ?編輯 ECSPIx_CONREG …

HTTP 與 SpringBoot 參數提交與接收協議方式

HTTP 協議支持多種參數提交方式&#xff0c;主要取決于請求方法(Method)和內容類型(Content-Type)。以下是主要的參數提交協議&#xff1a;1. URL 查詢參數 (Query Parameters)請求方法: GET (也可用于其他方法)格式: ?key1value1&key2value2示例: GET /users?id123&…

Lua(數組)

Lua 數組基礎概念Lua 中的數組實際上是用整數索引的 table&#xff0c;是一種特殊形式的表。數組索引通常從 1 開始&#xff08;Lua 慣例&#xff09;&#xff0c;但也可以從其他值開始。創建數組通過表構造器初始化數組&#xff1a;-- 索引從 1 開始的數組 local arr {10, …

【Docker項目實戰】在Docker環境下部署go-file文件分享工具

【Docker項目實戰】在Docker環境下部署go-file文件分享工具一、go-file介紹1.1 go-file簡介1.2 go-file特點1.3 go-file使用場景二、本地環境介紹2.1 本地環境規劃2.2 本次實踐介紹三、本地環境檢查3.1 檢查Docker服務狀態3.2 檢查Docker版本3.3 檢查docker compose 版本四、下…

C++基礎學習——文件操作詳解

一、文件流類概述 C 標準庫提供了三個主要的文件流類&#xff1a; ifstream (輸入文件流)&#xff1a;用于從文件讀取數據ofstream (輸出文件流)&#xff1a;用于向文件寫入數據fstream (文件流)&#xff1a;既可讀又可寫 這些類都繼承自 iostream 類&#xff0c;因此可以使用 …

Android補全計劃 DrawerLayout使用

DrawerLayout其實用了很久了&#xff0c;甚至封裝了一些代碼方便不同項目使用&#xff0c;但重構代碼的時候突然意識到這塊內容很不成體系&#xff0c;因此又參考了些文檔&#xff0c;組建了自己的一個文檔。 toolbardrawerlayout能寫的效果很多&#xff0c;在此我也只是截取了…

人工智能之數學基礎:概率論之韋恩圖的應用

韋恩圖的應用由于事件的計算有時候太過于抽象了&#xff0c;此時我們可以使用韋恩圖的方式來進行驗證&#xff0c;我們下面來舉一個例子&#xff0c;A∪B&#xff09;-CA∪(B-C)是否成立&#xff1f;我們可以通過韋恩圖來完成這個任務&#xff1a;我們通過這種方式來一點一點的…

小白成長之路-部署Zabbix7(二)

文章目錄一、zabbix-自動發現二、自動注冊三、zabbix-網易云郵箱-發送消息二、zabbix-釘釘告警總結一、zabbix-自動發現 1.在準備兩臺虛擬機&#xff0c;我的是192.168.144.12,192.168.144.13 server換成zabbix服務器的ip地址 vim /etc/zabbix/zabbix_agentd.conf 2.創建自動…

CMU15445-2024fall-project4踩坑經歷

project4目錄Task1Task2ReconstructSeqScanTask3InsertCommitTxnMgrDbgGenerateNewUndoLog And GenerateUpdateUndoLogUpdate And Delete垃圾回收Task4Index Insert并發控制Index ScanDelete、Update并發控制主鍵更新Bonus 1Bonus 2處理寫傾斜感謝CMU的教授們給我們分享了如此精…

C++20 協程

摘要&#xff1a;C20 引入的協程機制為異步編程提供了輕量級解決方案&#xff0c;其核心優勢在于通過用戶態調度實現高效的上下文切換&#xff0c;適用于 I/O 密集型任務、生成器模式等場景。本文系統闡述 C20 協程的底層原理與實踐要點&#xff0c;首先解析協程的基本結構&…

《計算機組成原理與匯編語言程序設計》實驗報告二 基本數字邏輯及漢字顯示

目 錄 一、實驗學時 二、實驗目的 三、實驗要求 四、實驗內容 五、實驗步驟 1、打開Logisim軟件&#xff0c;列出并行四位二進制全加器邏輯電路真值表&#xff0c;并使用與、或、非、異或等基本原件實現并行四位二進制全加器邏輯電路&#xff0c;鋪設完成后進行測試進而…

問卷調查小程序的設計與實現

問卷調查小程序的設計與實現&#xff1a;技術與功能全解析在數字化時代&#xff0c;問卷調查成為數據收集的重要工具。一款高效、易用的問卷調查小程序能夠顯著提升用戶體驗和數據質量。本文將深入探討基于現代技術棧的問卷調查小程序的設計與實現&#xff0c;涵蓋核心功能、技…

STM32項目實戰:正弦波

波形發生器對我的錢包不怎么友好&#xff0c;手里面有stm32f103c8t6&#xff0c;于是就想,放在哪兒吃灰也是吃灰&#xff0c;不如做個正弦波發生器。方案 dac沒怎么用過&#xff0c;所以打算使用輸出模擬正弦波。我們決定采用以下方案&#xff1a;1.使用TIM2_CH3&#xff08;PA…

Unity 時間抗鋸齒(Temporal Antialiasing, TAA)技術解析

時間抗鋸齒&#xff08;Temporal Antialiasing, TAA&#xff09;技術解析 一、什么是時間抗鋸齒&#xff08;TAA&#xff09;&#xff1f; 時間抗鋸齒&#xff08;TAA&#xff09;是一種先進的實時抗鋸齒技術&#xff0c;通過在時間維度上積累多幀渲染數據&#xff0c;實現比傳…

uniapp打開導航軟件并定位到目標位置的實現

/*** 打開導航* param location 經緯度(例如&#xff1a;"117.214713,39.116884")* param address 地址*/ export function mapNavigation(location, address) {const locationArr location.split(,)const longitude locationArr[0]const latitude locationArr[1]…