专业编程基础技术教程

网站首页 > 基础教程 正文

Linux环境通过Dockerfile创建Tomcat镜像

ccvgpt 2025-03-14 15:18:32 基础教程 2 ℃

简介: Docker通过读取Dockerfile里面的内容可以自动创建镜像(image),Dockerfile有自己书写格式和支持的命令,Docker程序解决这些命令间的依赖关系。Docker程序将读取Dockerfile,根据指令生成定制的image。Dockerfile是一个包含了build过程中需要执行的所有命令的文本文件。也可以理解为Dockfile是一种被Docker程序解释的脚本,由一条一条的指令组成,每条指令对应Linux系统下面的一条命令,由Docker程序将这些Dockerfile指令翻译成真正的Linux命令。相比image这种黑盒子,Dockerfile这种显而易见的脚本更容易被使用者接受,直观明确的表明image是怎么产生的。有了Dockerfile,当需要定制个性化的需求时,只需在Dockerfile上添加或者修改指令,重新生成image即可,省去了不断输入命令的麻烦。

本文将通过Dockerfile容器文件创建Tomcat镜像,Tomcat是一个中间件,在B/S架构中,浏览器发出的http请求经过Tomcat中间件,将动态资源(而apache和nginx处理的是静态资源)转发到最终的目的服务器上,响应消息再通过Tomcat返回给浏览器。

Linux环境通过Dockerfile创建Tomcat镜像

详细内容请参考下文。

一、Dockerfile格式

1、Dockerfile格式

2、Dockerfile编写规则

说明:Dockerfile的指令是忽略大小写的,建议使用大写,使用#作为注释,每一行只支持一条指令,每条指令可以携带多个参数。

Dockerfile的指令根据作用可以分为两种:构建指令和设置指令。构建指令用于构建镜像(image),其指定的操作不会在运行镜像(image)的容器上执行;而设置指令则用于设置镜像(image)的属性,其指定的操作将在运行镜像(image)的容器中执行。

二、Dockerfile构建Tomcat镜像

1、准备阶段

(1)、登录Linux

(2)、创建Tomcat的dockerfile目录

2、构建阶段

(1)、查看docker的运行情况

执行指令# systemctl status docker

备注:Docker运行状态为active (running),说明Docker已经安装并正常运行。

(2)、pull docker镜像

执行指令# docker pull centos:7.6.1810

(3)、下载Tomcat&JDK安装包

(4)、上传Tomcat&JDK安装包到创建的目录下

(5)、编写Dockerfile文件

#基础镜像

FROM centos:7.6.1810

#作者名称

LABEL maintainer="JasonTang"

ENV REFRESHED_AT 2024-02-26

#切换镜像目录,进入/usr目录

WORKDIR /usr

#在/usr/下创建jdk目录,用来存放jdk文件

RUN mkdir jdk

#在/usr/下创建tomcat目录,用来存放tomcat

RUN mkdir tomcat

#将宿主机的jdk目录下的文件拷至镜像的/usr/jdk目录下

ADD jdk1.8.0_401 /usr/jdk/

#将宿主机的tomcat目录下的文件拷至镜像的/usr/tomcat目录下

ADD apache-tomcat-8.5.59 /usr/tomcat/

#设置环境变量

ENV JAVA_HOME=/usr/jdk

ENV JRE_HOME=$JAVA_HOME/jre

ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH

ENV PATH=/sbin:$JAVA_HOME/bin:$PATH

#设置权限

RUN chmod -R 777 /usr/tomcat/bin/

RUN chmod -R 777 /usr/jdk/

#公开端口

EXPOSE 8080

#设置启动命令

ENTRYPOINT ["/usr/tomcat/bin/catalina.sh","run"]

(6)、通过docker命令构建镜像

执行指令# docker build -t tomcat:v2 .构建tomcat镜像

备注:执行指令后有镜像id显示,表示指令执行成功。

(7)、查看生成的镜像

执行指令# docker images

(8)、通过创建好的镜像启动一个容器

执行指令# docker run -dit -p 8080:8080 --name tomcat tomcat:v2

(9)、查看刚生成的容器

执行指令# docker ps -a

(10)、访问页面

执行指令# curl 本机IP地址

终端计算机浏览器访问

三、Docker启动后的错误信息及其解决办法

说明:通过镜像创建容器后,有时会出现Exited (126)或者Exited (127)的错误信息。

1、Exited (126)

说明:一般情况下,出现Exited (126)错误信息是由于JDK版本的问题,这个可以通过执行下列指令

# docker logs [容器ID] 查看启动过程的报错信息。

备注:通过查询,发现是由于JDK是32位版本,需要更换为64位的版本。

2、Exited (127)

说明:而出现Exited (127)错误信息情况是由于容器里头的目录及其以下文件没有对应权限,这个需要执行下列指令

先查询报错信息:

#docker logs [容器ID] 查看启动过程的报错信息。

再通过修改Dockfile文件执行授权指令:

然后执行

#docker rm [容器ID]删除容器

#docker rmi [镜像ID]删除镜像

再根据新的Dockerfile重新生成镜像

# docker build -t tomcat:v2 .

# docker run -dit -p 8080:8080 --name tomcat tomcat:v2

最近发表
标签列表