目錄
- 問題出現
- 問題重現
- 注意
- 解決方案
- 總結
問題出現
在服務器上使用docker安裝tomcat時遇到了無法訪問tomcat的問題。
是因為使用docker pull tomact 下載的tomcat鏡像中包含有兩個webapps 文件夾。
一個文件夾名為webapps,但是這個文件夾是空的,另外一個文件夾名為webapps.dist,里面有tomcat完整的文件夾和文件。
圖示:
問題重現
1、使用docker下載tomcat鏡像
docker pull tomcat:9
圖示:
2、創建tomcat容器
docker run -d -p 8080:8080 tomcat:9
圖示:
3、tomcat容器已經運行,但是還是無法訪問tomcat的首頁。
4、立刻查看防火墻端口和ECS安全組的情況。
查看防火墻狀態
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、以上步驟都沒問題,進入容器內部,發現兩個webapps。
docker exec -it 53724a20a48c /bin/bash
其中webapps文件夾為空,而webapps.dist包含完整的tomcat文件。
6、將目錄下webapps.dist里文件復制到webapps。
然后將webapps.dist刪除.
cp -r webapps.dist/* ./webapps rm -rf webapps.dist
7、結果
注意
tomcat容器停止重新啟動后,還會出現這兩個文件夾。
解決方案
對于以上出現的問題,可以通過commit操作創建自己的鏡像就可以完美的避開此類情況的出現。
docker commit 從容器創建一個新的鏡像。
語法:
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS說明:
- -a 提交的鏡像作者
- -c 使用Dockerfile指令來創建鏡像
- -m 提交時的說明文字
- -p 在commit時,將容器暫停
操作步驟
1、創建鏡像
docker commit -a="guardwhy" -m="kobe is mvp" 53724a20a48c tomcat9:9.1
圖示:
2、創建tomcat容器
docker run -d -p 8081:8080 6b8b40011890
3、進入到容器內部查看。
docker exec -it 459677594ee1 /bin/bash
圖示:
4、結果
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持。