作者:yangjl
前言
Docker镜像的基础知识可参考,这章主要是对编写Dockerfile相关内容的补充。可能之前很多小伙伴们使用iserve的镜像都是从docker中拉取的supermap/iserver的镜像运行iserver。肯定很多小伙伴能都想制作自己独有的iserver镜像,今天我以制作tomcat镜像为例带着大家学习下Dockerfile编写的基本规则。
一、Dockerfile基本定义及常用命令介绍
Dockerfile是一个包含用于组合镜像的命令的文本文档。可以使用在命令行中调用任何命令。Docker通过读取Dockerfile中的指令自动生成映像。docker build命令用于从Dockerfile构建镜像。可以在docker build命令中使用-f标志指向文件系统中任何位置的Dockerfile。或者在当前文件目录中编写名称Dockerfile文件,不需要指定-f也能构建镜像。以下图片是构建Dockerfile常用指令,可做参考
话不多说,进入正题。
二、构建镜像
2.1 软件准备
1.Docker安装这里就不赘述。
2.apache-tomcat-9.0.38.tar.gz
3.jdk-8u11-linux-x64.tar.gz
4.打包好的dist文件(这里我以一个小demo打包为测试示例)
2.2 构建Dockerfile
首先将需要的软件拷贝到服务器中。
并创建Dockerfile文件进行编写以下为所有内容
看的没错,寥寥几句就这样就能构建出一个简单的属于您自己的镜像,可能大家还是不太明白啥意思我带着大家理解一下
FROM centos #你的镜像是从何而来也可也理解为构建该镜像的基础镜像
MAINTAINER #构建者的信息一般是名字+邮箱
ADD apache-tomcat-9.0.38.tar.gz /etc/ #将tomcat压缩包拷贝到镜像中的etc目录并解压
ADD jdk-8u11-linux-x64.tar.gz /etc/ #将jdk拷贝到etc目录并解压
ENV workpath /etc #设置环境变量workpath,的路径是/etc。类似我们在系统变量中对/etc/profile中编写环境变量 export workpath=/etc。下面的ENV同样的道理,配置java环境变量都是在为我们的镜像设置环境变量让其可以正常运行tomcat。
WORKDIR #工作目录,进入容器的初始路径
EXPOSE 8080 #暴露tomcat的默认端口以方便外部访问
CMD #命令行,启动tomcat,并且输出日志,输出日志的原因是如果只执行启动tomcat,tomcat启动以后容器会里面停止。 因为docker容器运行必须有一个前台进程, 如果没有前台进程执行,容器认为空闲,就会自行退出
2.3 构建镜像
编写完成Dockerfile之后,构建镜像命令
Docker build -f dockefile的路径 -t ‘镜像名称’:版本号(可不写) .
因为该目录下我建的是名称为Dockerfile的文件,因此不需要指定dockerfile的目录也可执行,注意 ‘.’在后面是必须加上的,构建完成以后会输出
我们也可以通过docker images命令来查看创建的镜像名称.
2.4 运行容器、部署项目
1.首先需要在外部建一个ROOT目录用于挂载内部tomcat的ROOT目录。目的是为了持久化的保存项目数据,以及方便在外部宿主机上操作就能够部署咋们打包好的简单的web项目。
2.然后将dist的文件拷贝到ROOT目录下。
3.最后用构建好的mypro镜像运行容器执行 docker run 命令
4.然后将dist的文件拷贝到ROOT目录下。
-v 挂载文件 外部目录:内部目录
-p 暴露端口 外部端口:内部端口
等待控制台输出startup in 。。。
访问宿主机ip:8080端口访问部署的项目