欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Docker实战 使用Dockerfile生成定制镜像

程序员文章站 2022-03-29 19:33:21
...

什么是dockerfile

Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条条指令组成,每条指令对应Linux下面一条指令。docker程序就这些Dockerfile指令翻译成真正的Linux命令。Dockerfile有自己的书写格式和支持的命令,Docker程序解决这些命令的相互之间的依赖关系。docker程序将读取dockerfile,根据指令生成相对应的镜像。

实战搭建tomcat容器

根据之前讲过的,在kernel之上首先要挂在基础镜像,在这里我们选择centos作为基础镜像,然后配置我们需要的Dockerfile。

导入我们需要add的文件包:
apache-tomcat jdk

Docker实战 使用Dockerfile生成定制镜像
在这里我其实进入了一个误区,根据容器的性质,至少有一个工作在前台的守护进程,但是在这里我直接pull了一个centos镜像,根据下面这个图,我们可以看出来,这个centos是来自于library的:

Docker实战 使用Dockerfile生成定制镜像
这样的话,在后面run的时候会直接自动结束,因此我在这里使用了另一个镜像:

docker pull hub.c.163.com/public/centos:6.7-tools

这个镜像就会有守护进程,因此不会退出,接下来我们配置我们所需要的Dockerfile

FROM hub.c.163.com/public/centos
MAINTAINER dmoann

ADD ./apache-tomcat-8.5.57.tar.gz /root
ADD ./jdk-8u221-linux-x64.tar.gz /root

ENV JAVA_HOME /root/jkd1.8.0_25
ENV PATH $JAVA_HOME/bin:$PATH

EXPOSE 8080

ENTRYPOINT /root/apache-tomcat-8.5.57/bin/startup.sh $$ tailf /root/apache-tomcat-8.5.57/logs/catalina.out

这里的每一行语句都需要产生一级新的镜像,因此行数是有限的,最大128行。通常多的命令我们使用&&连接。

点击ESC,然后:wq

运行以下命令创建镜像

docker build -t tomcat:v2.0 .

Docker实战 使用Dockerfile生成定制镜像

PS:tomcat:v1.0是使用library/centos生成的,由于没有守护进程,所以会自动结束进程,tomcat:v2.0是使用我上面说的那个public/centos镜像,是不会自动结束的,因此下面使用的是tomcat:v2.0。

这里是docker镜像生成成功的截图。
Docker实战 使用Dockerfile生成定制镜像
镜像生成之后,我们要开始run一个容器出来

docker run --name tomcatpublic -p 80:8080 -d tomcat:v2.0

使用docker ps -a查看容器状态,显示正在运行,大功告成!登录http://0.0.0.0:80
Docker实战 使用Dockerfile生成定制镜像