系統環境:centos7.7 (VMware中)
image版本:tomcat:8-jdk8-openjdk (截止2020.01.10該系列版本)
安裝步驟參考文章:https://www.jianshu.com/p/d053573ffab1
1、docker search tomcat 查看版本總感覺不太直觀,可以去官網查找想要的版本 https://hub.docker.com/_/tomcat?tab=tags&page=1 ,然后使用docker pull tomcat:對應版本號 安裝,安裝最新可以直接使用 docker pull tomcat。
2、docker images 查看已經安裝的鏡像。
3、啟動一個tomcat容器,並命名為 test_tomcat 。
4、查看啟動的docker tomcat 容器。在(2020.1.5號以前)瀏覽器中輸入ip:端口號應該是可以訪問到tomcat管理頁面的,但是最新版本的docker tomcat鏡像運行后的容器竟然都不可以,即使最新版本的tomcat:latest也不行,下面我將為大家介紹處理方式。
(2020.01.05以前)的鏡像運行tomcat容器后訪問應該是下面的頁面
但(2020.01.05)后的所有版本tomcat鏡像啟動容器后訪問是下面這樣的。
這是為什么呢?下面介紹為什么。
5、創建linux宿主機文件夾用於存儲tomcat容器中復制出來的配置文件。
6、進入docker tomcat查看目錄。命令 docker exec -it 容器名字(或容器container id) bash。此處推薦用容器名字(如上面命名的容器名字test_tomcat)方便書寫。默認進入容器的 /usr/local/tomcat 文件夾,這里注意幾個文件夾后面會用到,一個是conf,一個是webapps。我們進入conf,然后查看里面有哪些文件,注意tomcat-users.xml是我們要復制的。
然后我們切換進webapps文件夾,查看里面的文件,竟然是空的!!!里面不應該有manager等文件夾嗎??等等,我們看上圖,webapps后面怎么多了一個webapps.dist文件夾???以前的版本是沒有的!讓我們切換進webapps.dist文件夾,查看里面的文件,哇!!!這不是應該在webaspps中的文件嗎???(個人猜測:因為docker推薦將webapps下的文件掛載在宿主機下,否則刪除tomcat容器的時候服務文件會全部丟失,為了讓大家主動將webapps掛載出來,可能維護者將以后的tomcat鏡像全部改成webapps為空,需要使用者手動將webapps.dist復制出來並掛載使用)我可能是第一個發現這個版本配置的文章???
原文地址:https://www.cnblogs.com/jying/p/12176107.html
作者:一定會去旅行
歡迎任何形式的轉載,但請務必注明出處。
限於本人水平,如果文章和代碼有表述不當之處,還請不吝賜教。
7、exit退出容器,並復制tomcat容器配置文件(tomcat-users.xml)和整個webapps.dist文件夾到linux 宿主機。用語句 docker cp 容器配置文件路徑 linux宿主機存儲路徑。
8、停止正在運行的tomcat容器,並刪除該容器test_tomcat。
9、修改復制出來的文件。tomcat-users.xml配置權限,/webapps/manager/META-INF/context.xml 配置訪問地址和端口等。
編輯tomcat-usrs.xml,底部</tomcat-users>以內添加如下內容,其中授權訪問賬號為:tomcat,密碼為:tomcat.2019
<role rolename="manager-gui" /> <role rolename="manager-script" /> <role rolename="manager-status" /> <role rolename="manager-jmx" /> <user username="tomcat" password="tomcat.2019" roles="manager-gui,manager-script,manager-status,manager-jmx" />
切進/webapps/manager/META-INF文件夾,編輯里面的context.xml文件,將以下內容注釋掉。
<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->
10、重新運行一個tomcat容器,並掛載本地的配置文件到容器對應文件。
docker run -dit --name my_tomcat_2020 -p 8081:8080 --restart=always -e TZ="Asia/Shanghai" -v /etc/localtime:/etc/localtime:ro -v /www/tomcat/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml -v /www/tomcat/webapps:/usr/local/tomcat/webapps tomcat:8-jdk8-openjdk
參數解析:
-d 后台運行容器,並返回容器ID;
--name 為容器起一個容易區分且容易書寫的名字
-p 映射宿主機端口到容器端口,宿主機端口:容器端口
--restart=always 機器重啟時自動啟動容器
-e 設定一些必須的環境變量。本例子中 -e TZ="Asia/Shanghai" 設定時區為上海,強烈建議國內設定,否則容器內打印的所有日志時間都會差8小時。
-v 掛載宿主機文件到容器。本例三個分別為:
-v /etc/localtime:/etc/localtime:ro 掛載宿主機時間,保持容器時間正確。
-v /www/tomcat/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml 掛載宿主機配置文件到容器。
-v /www/tomcat/webapps:/usr/local/tomcat/webapps 掛載宿主機/webapps到容器。
更多配置參數含義請參考:https://blog.csdn.net/qq_19381989/article/details/102781663
11、重新訪問ip:8081,便可以訪問頁面啦,manager也可以進去~~
12、配置完成~~