Docker实战 使用Dockerfile生成定制镜像
什么是dockerfile
Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条条指令组成,每条指令对应Linux下面一条指令。docker程序就这些Dockerfile指令翻译成真正的Linux命令。Dockerfile有自己的书写格式和支持的命令,Docker程序解决这些命令的相互之间的依赖关系。docker程序将读取dockerfile,根据指令生成相对应的镜像。
实战搭建tomcat容器
根据之前讲过的,在kernel之上首先要挂在基础镜像,在这里我们选择centos作为基础镜像,然后配置我们需要的Dockerfile。
导入我们需要add的文件包:
apache-tomcat jdk
在这里我其实进入了一个误区,根据容器的性质,至少有一个工作在前台的守护进程,但是在这里我直接pull了一个centos镜像,根据下面这个图,我们可以看出来,这个centos是来自于library的:
这样的话,在后面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 .
PS:tomcat:v1.0是使用library/centos生成的,由于没有守护进程,所以会自动结束进程,tomcat:v2.0是使用我上面说的那个public/centos镜像,是不会自动结束的,因此下面使用的是tomcat:v2.0。
这里是docker镜像生成成功的截图。
镜像生成之后,我们要开始run一个容器出来
docker run --name tomcatpublic -p 80:8080 -d tomcat:v2.0
使用docker ps -a
查看容器状态,显示正在运行,大功告成!登录http://0.0.0.0:80
上一篇: MySQL数据库索引
推荐阅读
-
docker官方镜像下载及使用Dockerfile创建镜像的方法
-
Docker使用Dockerfile来创建镜像
-
Docker如何使用Dockerfile构建镜像
-
使用Dockerfile构建docker镜像
-
使用jib打包docker镜像实战
-
asp.net core webapi 使用ef 对mysql进行增删改查,并生成Docker镜像构建容器运行
-
使用IDEA直接生成docker镜像并运行
-
实战docker,编写Dockerfile定制tomcat镜像,实现web应用在线部署
-
Docker Dockerfile 定制镜像的方法
-
详解使用Dockerfile创建带Apache服务的CentOS Docker镜像