Docker安裝Tomcat無法訪問的問題及解決
問題出現(xiàn)
在服務(wù)器上使用docker安裝tomcat時遇到了無法訪問tomcat的問題。
是因為使用docker pull tomact 下載的tomcat鏡像中包含有兩個webapps 文件夾。
一個文件夾名為webapps,但是這個文件夾是空的,另外一個文件夾名為webapps.dist,里面有tomcat完整的文件夾和文件。
圖示:

問題重現(xiàn)
1、使用docker下載tomcat鏡像
docker pull tomcat:9
圖示:

2、創(chuàng)建tomcat容器
docker run -d -p 8080:8080 tomcat:9
圖示:

3、tomcat容器已經(jīng)運行,但是還是無法訪問tomcat的首頁。

4、立刻查看防火墻端口和ECS安全組的情況。
查看防火墻狀態(tài)
systemctl status firewalld
開啟防火墻
systemctl start firewalld
查看端口信息
firewall-cmd --list-ports # 只看端口信息
開啟端口和重啟防火墻
- 開端口命令:
firewall-cmd --zone=public --add-port=8080/tcp --permanent
- 重啟防火墻:
systemctl restart firewalld.service
查看安全組情況

注意:防火墻8080 端口開了并且阿里云安全組也開放了才能訪問遠程。
5、以上步驟都沒問題,進入容器內(nèi)部,發(fā)現(xiàn)兩個webapps。
docker exec -it 53724a20a48c /bin/bash
其中webapps文件夾為空,而webapps.dist包含完整的tomcat文件。

6、將目錄下webapps.dist里文件復(fù)制到webapps。
然后將webapps.dist刪除.
cp -r webapps.dist/* ./webapps rm -rf webapps.dist
7、結(jié)果

注意
tomcat容器停止重新啟動后,還會出現(xiàn)這兩個文件夾。
解決方案
對于以上出現(xiàn)的問題,可以通過commit操作創(chuàng)建自己的鏡像就可以完美的避開此類情況的出現(xiàn)。
docker commit 從容器創(chuàng)建一個新的鏡像。
語法:
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS說明:
- -a 提交的鏡像作者
- -c 使用Dockerfile指令來創(chuàng)建鏡像
- -m 提交時的說明文字
- -p 在commit時,將容器暫停
操作步驟
1、創(chuàng)建鏡像
docker commit -a="guardwhy" -m="kobe is mvp" 53724a20a48c tomcat9:9.1
圖示:

2、創(chuàng)建tomcat容器
docker run -d -p 8081:8080 6b8b40011890
3、進入到容器內(nèi)部查看。
docker exec -it 459677594ee1 /bin/bash
圖示:

4、結(jié)果

總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
docker在win10家庭版下構(gòu)建laravel開發(fā)環(huán)境的教程詳解
這篇文章主要介紹了docker在win10家庭版下構(gòu)建laravel開發(fā)環(huán)境,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06
Gitlab-runner+Docker實現(xiàn)自動部署SpringBoot項目
這篇文章主要介紹了Gitlab-runner+Docker自動部署SpringBoot項目,我們的主要流程就是通過Gitlab管理代碼,然后利用Gitlab自帶的Gitlab?CI/CD功能與GitlabRunner進行注冊綁定,需要的朋友可以參考下2022-04-04
Docker與Jenkins實現(xiàn)RuoYi-Vue前后端分離項目的CICD全流程自動化
在現(xiàn)代軟件開發(fā)流程中,持續(xù)集成/持續(xù)部署(CICD)已經(jīng)成為提升開發(fā)效率、保障代碼質(zhì)量的關(guān)鍵實踐,本文將詳細介紹如何利用Docker容器化技術(shù)結(jié)合Jenkins,搭建一套完整的CICD流程,實現(xiàn)RuoYi-Vue前后端分離項目的自動化構(gòu)建、測試和部署,從代碼提交到自動部署的全流程自動化2026-01-01
使用Docker開發(fā)python Web 應(yīng)用
本文給大家詳細講解了如何使用Docker開發(fā)python應(yīng)用,特別是WEB應(yīng)用的步驟,Docker本質(zhì)上提供了非常輕量化的VMs,我們可以使用其創(chuàng)建一個高標(biāo)準(zhǔn)隔離并能大大減少失配的開發(fā)和產(chǎn)品環(huán)境。2016-10-10
使用非root用戶安裝及啟動docker的問題(rootless模式運行)
docker是使用--userns-remap容器用戶映射宿主機用戶的方式來解決問題,用戶和組的映射由兩個配置文件來控制,分別是/etc/subuid和/etc/subgid,本文給大家介紹非root用戶啟動docker的問題,感興趣的朋友一起看看吧2022-05-05
Docker Registry以及Docker-Registry-UI部署過程
這篇文章主要介紹了Docker Registry以及Docker-Registry-UI部署過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2026-03-03

