目標:自定義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<[email protected]>
#把宿主機上下文的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