从远程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