编写Dockerfile文件搭建centos+tomcat+java容器

本文详细介绍了Dockerfile的常用指令及创建基于CentOS+Java的Tomcat镜像的步骤。从基础镜像选择到环境变量配置,再到端口暴露和启动命令设定,一步步解析了Dockerfile的构建过程。最后展示了如何通过Dockerfile构建镜像并启动容器,以及如何映射本地项目和日志。
摘要由CSDN通过智能技术生成

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明 

整理不易,如需转发请注明出处

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiJ6aKX6I2J5Li2,size_20,color_FFFFFF,t_70,g_se,x_16

一、Docker常用指令说明

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiJ6aKX6I2J5Li2,size_20,color_FFFFFF,t_70,g_se,x_16

1、Dockerfile常用指令:

FROM:             ## 基础镜像,一切从这里开始构建

MAINTSINER     ##镜像是谁写的,一些备注信息song<song@cityhouse.cn>

RUN                    ##镜像构建的时候需要运行的命令

ADD                    ## 步骤:添加本地内容

WORKDIR           ## 镜像的工作目录

VOLUME              ##挂载的目录

EXPOSE              ## 暴露端口配置,和-p命令一样

CMD                     ##指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替换

ENTRYPOINT      ##指定这个容器启动的时候要运行的命令,可以追加命令

ONBUILD             ##当构建一个被继承Dockerfile,这个时候就会运行onbuild,触发指令

COPY                   ##类似ADD,将我们的文件拷贝到镜像中

ENV                      ##构建的时候设置环境变量

2、dockerfile文件基础知识:

1、每个保留关键字(指令)都是必须是大写字母

2、执行从上到下顺序执行

3、每一个指令都会创建提交一个新的镜像层,并提交

二、创建一个tomcat镜像,基于centos+java

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiJ6aKX6I2J5Li2,size_20,color_FFFFFF,t_70,g_se,x_16

前言:

Docker镜像逐渐成为企业交付的标准,以后发布项目做镜像就需要编写dockerfile文件

使用步骤说明:

Dockerfile:构建文件,定义了一切的步骤,源代码

DockerImages:通过Dockerfile构建生成的镜像最终发布和运行产品

Docker容器:容器是镜像运行起来提供服务

以下是一个完整的tomcat镜像,基于centos+java的构建步骤

1、准备jdk和tomcat安装包

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiJ6aKX6I2J5Li2,size_20,color_FFFFFF,t_70,g_se,x_16

 2、编写DockerFile文件

第一行:基于centos镜像

第二行:创作人信息

第三行:一个举例信息拷贝本机一个文件到容器

第四行:解压jdk到容器中/usr/local,ADD可以实现自动解压

第五行:解压tomcat到容器中/usr/local

第六行:安装vim,因为容器中默认是没有的

第七、八行:指定进入容器后中的目录

第九、十行:配置java环境变量

第十一、十二、十三:配置tomcat环境变量

第十四行:tomcat暴露端口

FROM centos
MAINTAINER song<song@cityhouse.cn>
COPY readme.txt /usr/local/src/readme.txt
ADD jdk1.8.0_201.tar.gz /usr/local/
ADD apache-tomcat-8.5.71.tar.gz /usr/local/
RUN yum -y install vim
ENV MYPATH /usr/local
WORKDIR $MYPATH
ENV JAVA_HOME /usr/local/jdk1.8.0_201
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.71
ENV CATALINA_BASE /usr/local/apache-tomcat-8.5.71
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/local/apache-tomcat-8.5.71/bin/startup.sh && tail -f /usr/local/apache-tomcat-8.5.71/logs/catalina.out

3、构建镜像(因为是标准的Dockerfile文件名,默认可以自动寻找可以不用加-f Dockerfile )

docker build -f Dockerfile -t mytomcat .

 可以清楚的看到分层构建过程,根据dockerfile定义的操作执行

Sending build context to Docker daemon  202.4MB
Step 1/16 : FROM centos
 ---> 5d0da3dc9764
Step 2/16 : MAINTAINER song<song@cityhouse.cn>
 ---> Using cache
 ---> cc0db92fed94
Step 3/16 : COPY readme.txt /usr/local/src/readme.txt
 ---> 813c129fbc20
Step 4/16 : ADD jdk1.8.0_201.tar.gz /usr/local/
 ---> f551c2816968
Step 5/16 : ADD apache-tomcat-8.5.71.tar.gz /usr/local/
 ---> 76a5fd9e99ef
Step 6/16 : RUN yum -y install vim
 ---> Running in f0d176f8a13b
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

Installed:
  gpm-libs-1.20.7-17.el8.x86_64         vim-common-2:8.0.1763-16.el8.x86_64    
  vim-enhanced-2:8.0.1763-16.el8.x86_64 vim-filesystem-2:8.0.1763-16.el8.noarch
  which-2.21-16.el8.x86_64             

Complete!
Removing intermediate container f0d176f8a13b
 ---> dfe2a249ef13
Step 7/16 : ENV MYPATH /usr/local
 ---> Running in ab37e25779fb
Removing intermediate container ab37e25779fb
 ---> 6e2708131934
Step 8/16 : WORKDIR $MYPATH
 ---> Running in b7162622e58b
Removing intermediate container b7162622e58b
 ---> 71fcf02ea27d
Step 9/16 : ENV JAVA_HOME /usr/local/jdk1.8.0_201
 ---> Running in 2d981b34d95e
Removing intermediate container 2d981b34d95e
 ---> 43b0500c6ab8
Step 10/16 : ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
 ---> Running in 7dcb59ef033d
Removing intermediate container 7dcb59ef033d
 ---> 2732d9f1aa83
Step 11/16 : ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.71
 ---> Running in db39354f8a94
Removing intermediate container db39354f8a94
 ---> a7e6079cb819
Step 12/16 : ENV CATALINA_BASE /usr/local/apache-tomcat-8.5.71
 ---> Running in 8dff2ccb6762
Removing intermediate container 8dff2ccb6762
 ---> 67c8dc32f385
Step 13/16 : ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_BASE
 ---> Running in 622fef189ebd
Removing intermediate container 622fef189ebd
 ---> be9309c9bbfc
Step 14/16 : EXPOSE 8080
 ---> Running in 13206c9f4392
Removing intermediate container 13206c9f4392
 ---> cd3dbe75afa8
Step 15/16 : CMD /usr/local/apache-tomcat-8.5.71/bin/startup.sh && tail -f /usr/local/apache-tomcat-8.5.71/logs/catalina.out
 ---> Running in 4b2c2dd1209d
Removing intermediate container 4b2c2dd1209d
 ---> dd09b97c114f
Successfully built 154a2ce09d85
Successfully tagged mytomcat:latest

 docker images 可以看到本机已经有tomcat这个镜像了

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiJ6aKX6I2J5Li2,size_20,color_FFFFFF,t_70,g_se,x_16

 4、启动镜像,发布项目

(1)、我本地有一个tomcat应用可以直接映射本地项目启动

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiJ6aKX6I2J5Li2,size_19,color_FFFFFF,t_70,g_se,x_16

 (2)、docker run一个容器,定义端口+本地项目+logs映射

docker run -d -it -p 8888:8080 --name=mytomcat -v /usr/local/tomcat/webapps/ROOT/WEB-INF/:/usr/local/apache-tomcat-8.5.71/webapps/ROOT/WEB-INF/ -v /usr/local/src/tomcatlogs/:/usr/local/apache-tomcat-8.5.71/logs mytomcat  

(3)、运行后可以直接的目录就是/usr/local,在我们的dockerfile中有定义WORKDIR       

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiJ6aKX6I2J5Li2,size_20,color_FFFFFF,t_70,g_se,x_16

 (4)、宿主机日志信息也有了watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiJ6aKX6I2J5Li2,size_20,color_FFFFFF,t_70,g_se,x_16

 5、访问测试

curl localhost:8888

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiJ6aKX6I2J5Li2,size_20,color_FFFFFF,t_70,g_se,x_16

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三颗草丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值