您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
28_尚硅谷_Docker_DockerFile案例-自定义的tomcat9
发布时间:2022-11-13 22:16:32编辑:雪饮阅读()
目标:
基于centos7镜像制作一个新的镜像,这个新镜像需要从制作镜像时所在工作目录中添加文件到这个新镜像中(cp)以及从工作目录中解压.tar.gz这种文件到新镜像中(制作tomcat镜像需要用到的java和tomcat希望使用这种方式(add)),最后运行测试及运行挂载宿主机的两个卷分别到一个未来给新容器中部署一些测试的web工程以及可以在宿主机中便捷查看新容器中的tomcat中的日志目录的卷。
step1
编写Dockerfile文件
[root@localhost mydocker]# cat Dockerfile
from centos:centos7
maintainer xy<1509272975@qq.com>
copy c.txt /usr/local/cincontainer.txt
add jdk-8u171-linux-x64.tar.gz /usr/local/
add apache-tomcat-9.0.8.tar.gz /usr/local/
run yum -y install vim
env mypath /usr/local
workdir $mypath
env JAVA_HOME /usr/local/jdk1.8.0_171
env CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
env CATALINA_HOME /usr/local/apache-tomcat-9.0.8
env CATALINA_BASE /usr/local/apache-tomcat-9.0.8
env PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
expose 8080
cmd /usr/local/apache-tomcat-9.0.8/bin/startup.sh && tail -f /usr/local/apache-tomcat-9.0.8/logs/catalina.out
copy:这里用做将宿主机的某个文件拷贝到新的镜像中
add:用于解压宿主机中的压缩包到新的镜像中的指定目录中,具体支持多少种压缩格式,暂时不太清楚,但目前的tar.gz肯定是支持的。
run:运行一些命令,这里就安装vim命令吧。
env:这里设置了tomcat运行所需的一些环境变量。(add java那个包后就会有了对于环境变量值对应的文件路径了)
cmd 这里主要是在基于该容器的镜像运行时启动tomcat并不断跟随tomcat的catalina输出日志,catalina.out应该是在tomcat启动后自动创建,你如果没有启动时候直接去查看的时候会发现没有该文件。另外这里的-f我看某些视频上讲的是-F,实际上我这里小写也可以。
step2
构建新镜像
docker build -t mytomcat .
这里可以看到构建命令比之前要简单多了,是因为默认若在当前工作目录进行构建,且-f指定的构建文件名正好就是Dockerfile,那么可以省略-f参数。最后那个“.”就是在当前工作目录进行构建。
step3
验证新镜像
运行容器先以交互式
[root@localhost mydocker]# docker run -it mytomcat
为什么呢?因为上面不是说了那个-F被我修改为-f了,那么到底有没有作用,由于我们最后的容器运行后默认命令是跟随tomcat的那个catalina.out输出日志的。
这里只要看到有相关输出就ok了。
step4
容器后台运行并挂载一开始的任务目标中说的两个卷
docker run -d -p 80:8080 --name mytomcat_container -v /root/mydocker/test:/usr/local/apache-tomcat-9.0.8/webapps/test -v /root/mydocker/tomcat9logs:/usr/local/apache-tomcat-9.0.8/logs --privileged=true mytomcat
-v挂载卷,左边参数是宿主机目录,右边是容器中的路径,当宿主机目录不存在时会自动创建,那么这里就挂载了一个用于到时候放置一些web项目的目录/root/mydocker/test以及便捷查看tomcat的日志的目录/root/mydocker/tomcat9logs
--privileged是开启特权,据说是如果出现了不可写权限时候需要加这个,那么我个人理解为像是上面自动挂载宿主机目录时候,宿主机目录不存在的时候自动建立宿主机目录的时候可能会出现不可写权限吧。
这里将宿主机的80端与容器暴漏的8080端口映射,则测试访问如http://192.168.178.128/就可以看到tomcat9默认的web界面了
这里192.168.178.128就是君的宿主机ip地址了。
step5
验证宿主机目录
[root@localhost mydocker]# tree
.
├── apache-tomcat-9.0.8.tar.gz
├── c.txt
├── Dockerfile
├── DockerFile
├── DockerFile2
├── DockerFile3
├── DockerFile4
├── DockerFile5
├── DockerFile6
├── jdk-8u171-linux-x64.tar.gz
├── test
└── tomcat9logs
├── catalina.2022-11-13.log
├── catalina.out
├── host-manager.2022-11-13.log
├── localhost.2022-11-13.log
├── localhost_access_log.2022-11-13.txt
└── manager.2022-11-13.log
2 directories, 16 files
可见宿主机上确实自动建立了对应挂载卷的目录
step6
验证目标容器的java版本
[root@localhost mydocker]# docker exec mytomcat_container java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
可见也是我们前面编写Dockerfile时候所add的java版本
step7
最后,下次我们将实现将web项目发布到目标容器的上面我们所挂载卷对应的/usr/local/apache-tomcat-9.0.8/webapps/test目录中。
关键字词:Docker,DockerFile,案例,自定义,tomcat9,tomcat
相关文章
- 27_尚硅谷_Docker_DockerFile案例-ONBUILD命令案例
- 26_尚硅谷_Docker_DockerFile案例-CMD-ENTRYPOINT命令
- 25_尚硅谷_Docker_DockerFile案例-自定义镜像mycentos
- 21_尚硅谷_Docker_容器数据卷volumes-from(容器数据卷
- 20_尚硅谷_Docker_容器数据卷用DockerFile添加
- 19_尚硅谷_Docker_容器数据卷用V命令添加(挂载卷及挂
- 17_尚硅谷_Docker_镜像commit
- 15_尚硅谷_Docker_容器命令(下)
- 14_尚硅谷_Docker_容器命令(上)
- 13_尚硅谷_Docker_镜像命令