從遠程docker hub拉取一個官方的tomcat鏡像
[root@host-192-168-48-4 local]# docker pull tomcat:8.5-jdk8-adoptopenjdk-openj9
查看拉取的鏡像
可以看到有tomcat這個鏡像了
[root@host-192-168-48-4 local]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat 8.5-jdk8-adoptopenjdk-openj9 a16a77bb3591 8 days ago 342MB
nginx latest 2622e6cca7eb 2 weeks ago 132MB
mysql 5.7 9cfcce23593a 2 weeks ago 448MB
運行這個tomcat鏡像測試是否能正常使用
映射宿主機端口8888到docker容器的8080端口,tomcat默認啓動在8080端口
[root@host-192-168-48-4 local]# docker run --name tomcat-8888 -d -p 8888:8080 tomcat
瀏覽器驗證是否能訪問
但是很遺憾,404.。。。。。。
進入tomcat容器查看日誌 確認正常啓動
[root@host-192-168-48-4 fkk]# docker exec -it tomcat-8888 bash
root@f0f9f7bd2a07:/usr/local/tomcat# ls
bin BUILDING.txt conf CONTRIBUTING.md lib LICENSE logs native-jni-lib NOTICE README.md RELEASE-NOTES RUNNING.txt temp webapps webapps.dist work
root@f0f9f7bd2a07:/usr/local/tomcat# cd logs/
root@f0f9f7bd2a07:/usr/local/tomcat/logs# ls
catalina.2020-06-26.log host-manager.2020-06-26.log localhost.2020-06-26.log localhost_access_log.2020-06-26.txt manager.2020-06-26.log
root@f0f9f7bd2a07:/usr/local/tomcat/logs# tail -f catalina.2020-06-26.log
26-Jun-2020 04:44:21.674 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
26-Jun-2020 04:44:21.674 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
26-Jun-2020 04:44:21.697 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 1.1.1 11 Sep 2018]
26-Jun-2020 04:44:21.985 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
26-Jun-2020 04:44:22.028 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
26-Jun-2020 04:44:22.075 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 3027 ms
26-Jun-2020 04:44:22.155 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
26-Jun-2020 04:44:22.156 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.56
26-Jun-2020 04:44:22.194 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
26-Jun-2020 04:44:22.210 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 133 ms
進入webapps目錄下查看
root@f0f9f7bd2a07:/usr/local/tomcat# cd webapps
root@f0f9f7bd2a07:/usr/local/tomcat/webapps# ls
root@f0f9f7bd2a07:/usr/local/tomcat/webapps#
果然,webapps下沒有東西,但是在與webapps同級有一個webapps.dist目錄,進去發現root等文件目錄在這個目錄下,這就導致在訪8080首頁是看不到頁面。那好吧,就把目錄下的文件拷貝到webapps目錄下就可以了。
基於現有的容器自定義自己的tomcat鏡像
上面提到的,默認官方的webapps目錄下是沒有文件的,在手動拷貝文件更換目錄後,我們可以基於現在的容器創建一個自己的tomcat鏡像,這樣之後使用自己的tomcat鏡像就可以創建webapps目錄下有文件的容器了。
-a 提交作者
-m 描述
tomcat-8888 是要製作爲鏡像的容器名稱,也就是我們更改webapps下文件的容器
tomcat8.5:1.0.1 對應的是鏡像的REPOSITORY 和TAG
[root@host]# docker commit -a 'fkk' -m 'move webapps.diat file to webapps' tomcat-8888 tomcat8.5:1.0.1
查看鏡像列表
可以看到tomcat8.5這個鏡像創建好了,ok
[root@host-192-168-48-4 fkk]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat8.5 1.0.1 afbc27719946 5 seconds ago 347MB
tomcat 8.5-jdk8-adoptopenjdk-openj9 a16a77bb3591 8 days ago 342MB
nginx latest 2622e6cca7eb 2 weeks ago 132MB
mysql 5.7 9cfcce23593a 2 weeks ago 448MB
busybox latest 1c35c4412082 3 weeks ago 1.22MB
rancher/server latest 98d8bb571885 7 weeks ago 1.08GB