docker搭建一个tomcat镜像(自定义tomcat和jdk)
1、安装docker,参考https://www.cnblogs.com/caoweixiong/p/12186736.html,根据操作系统来
2、docker安装完成之后,首先制作一个基础镜像(理解为操作系统的相关库依赖)
//初始没有
//下载一个(上面链接里有),这里以centos为例
输入命令:docker pull centos,完成后如下图
3、准备制作tomcat的基础内容(便于制作镜像都放同一个文件夹)
准备内容如下图
>>tomcat、jdk(jre就行了),因为我自定义了这俩内容(改过端口等等),所以我存了文件夹
>>run.sh,名称随意,用来定义进入镜像执行什么内容,简单说就是去启动tomcat,然后再把文件执行句柄交给下列的Dockerfile文件,run.sh内容如下
#!/bin/bash sh /opt/tomcat/bin/catalina.sh run
>>Dockerfile文件,docker镜像制作文件,是一串指令集合,如下
FROM centos:latest #基础镜像,也就是第二步准备的内容,从docker images命令查看
MAINTAINER cc-man #忽略
#上传
ADD tomcat9.0.50 /opt/tomcat/ #将自定义的tomcat文件夹移动到镜像中的/opt/tomcat/目录,非特定地址根据自身源文件(夹)和目标文件夹确定即可
ADD jre /opt/jre/ #同理,移动jre
COPY /run.sh /root/run.sh #同理,移动进入镜像执行的指令集
RUN chmod 777 /root/run.sh #执行权限
#环境变量
ENV JAVA_HOME=/opt/jre #同tomcat中的环境变量设置,根据tomcat和jre(或jdk)位置确定
ENV JRE_HOME=/opt/jre
ENV CATALINA_HOME=/opt/tomcat
ENV CATALINA_BASE=/opt/tomcat
ENV PATH=:$JAVA_HOME/bin:$PATH
ENV CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
ENTRYPOINT ["/root/run.sh"] #简单理解为进入镜像就执行的指令,更多意义请网上搜
4、编译(制作)镜像
执行命令
docker build -t my_tomcat:1.0 . #表示编译当前目录下的内容到镜像文件中,其中镜像名为my_tomcat,tag(版本)为1.0,这俩可以随意,别忘了最后有一个.表示当前目录
出现如图内容则制作成功了。
5、使用某个镜像在容器中运行
两个比较简单的命令
docker run -d -p 8080:8090 my_tomcat:1.0 #-d表示后台运行,返回容器号,跟tomcat 的startup.sh类似;-p是端口映射,镜像中的8090映射到宿机的8080 或者 docker run -it -p 8080:8090 my_tomcat:1.0 #-it表示交互式运行,类似tomcat的catalina.sh,会输出日志,ctrl+c退出
如图表示以容器运行了,通过宿机端口(8080)来访问即可。
http:ip//8080/test/readme.txt(删掉了webapp下面的内容,新增了一个测试文本),如下图访问成功
6、常用命令:
docker images #查看镜像 docker ps #查看目前运行的容器 docker rmi 镜像id #删除镜像(一般删不掉是要做后面两步骤) docker stop 容器id #停掉容器 docker rm 容器id #删除容器