目标:自定义tomcat9的镜像,并通过该镜像成功生成容器
准备工作:
1、安装了docker
2、准备apache-tomcat-9.0.19.tar.gz
和jdk-8u181-linux-x64.tar.gz
压缩包
ps:文中马赛克掉的是因为我是安装完之后才写的这篇文章,有些文件一开始是没有的,不用担心影响操作流程。
pps:本文内容来自尚硅谷
1、创建一个文件夹,并将压缩包上传至该目录,并创建一个演示文件c.txt(文件没有作用,仅用于演示COPY命令需要)
形成这样的目录结构:
2、在/linchong/mydocker/tomcat9下编写Dockerfile文件
使用vim Dockerfile
命令打开,粘贴下面文件内容,使用:wq
保存退出
FROM centos
MAINTAINER linchong<714987173@qq.com>
#把宿主机上下文的c.txt拷贝到容器/usr/local下
COPY c.txt /usr/local/cincontainer.txt
#把jdk和tomcat添加到容器中
ADD jdk-8u181-linux-x64.tar.gz /usr/local
ADD apache-tomcat-9.0.19.tar.gz /usr/local
#安装vim编辑器
RUN yum -y install vim
#设置登录之后的落脚点
ENV MYPATH /usr/local
WORKDIR $MYPATH
#配置jdk和tomcat环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_181
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.19
ENV CATALINE_BASE /usr/local/apache-tomcat-9.0.19
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
#容器运行时监听的端口
EXPOSE 8080
#启动时运行tomcat
#ENTRYPOINT ["/usr/local/apache-tomcat-9.0.19/bin/startup.sh"]
#CMD ["/usr/local/apache-tomcat-9.0.19/bin/startup.sh","run"]
CMD /usr/local/apache-tomcat-9.0.19/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.19/bin/logs/catalina.out
3、build镜像
完整写法:
docker build -f /linchong/mydocker/tomcat9/Dockerfile -t lctomcat9 .
也可以省略为:
docker build -t lctomcat9 .
构建成功后可通过 docker images
命令查看到该镜像
4、运行镜像
运行指令:
docker run -d -p 9080:8080 -v /linchong/mydocker/tomcat9/test:/usr/local/apache-tomcat-9.0.19/webapps/test -v /linchong/mydocker/tomcat9/tomcat9logs/:/usr/local/apache-tomcat-9.0.19/logs --privileged=true lctomcat9
指令参数解释:
-d
表示后台运行容器
-p
指定端口号。9080是主机对外暴露的端口号,8080是容器的端口号
-v
添加容器的镜像卷,使得主机的文件和容器中的文件能够共享
--privileged=true
防止没有写的权限
lctomcat9
这个是自定义的镜像名称
可以看到由该镜像生成的容器为:
5、测试
注意:记得打开防火墙的9080端口,如果是云主机要添加安全组规则9080