18.DockerFile介绍
18.1. 什么是DockerFile?
首先,Dockerfile是一个文本文件,包含了一条条的指令;
其次,Dockerfile是由一系列命令和参数构成的脚本,每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像;
第三,应用于基础镜像并最终创建一个新的镜像。
好处
1、对于开发人员:可以为开发团队提供一个完全一致的开发环境;
2、对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了;
3、对于运维人员:在部署时,可以实现应用的无缝移植;
构建步骤
1、编写一个dockerfile文件
2、使用docker build ......
命令构建成为一个镜像
3、使用 docker run ......
运行镜像
最后,如果构建出来的镜像需要长期使用,或者想要共享出去,可以使用docker push ......
命令对镜像进行发布,可以发布到DockerHub、阿里云镜像仓库中。
在DockerHub官网上,查看镜像的DockerFile
第一步,在DockerHub官网上查到centos,并点击如下位置
第二步,查看centos镜像的dockerfile文件内容
从截图中,可以看到,dockerhub上面的镜像,也都是由Dockerfile来生成的;
官网的centos镜像比较简单,所以大小只有200+M,如果我们想要我们自己构建的centos中包含(jdk+tomcat+....),就需要我们自己编写一个Dockerfile来构建出自己的镜像。
18.2. DockerFile构建过程
想要了解DockerFile的构建过程,就必须要了解DockerFile文件的基本编写规范:
- 每条指令(即:每个保留关键字)都必须是大写字母
- 指令的执行,是从上到下顺序执行的
#
号表示注释- 每条指令都会创建一个新的镜像层,并提交
DockerFile是面向开发的,我们之前的项目都是打包成为一个jar(或war)的形式部署的,我们以后在发布项目的时候,可以编写一个DockerFile文件,做成镜像,这样就会使得开发、部署十分简单。
DockerFile镜像,现在已经逐步成为企业交付的标准,因此必须掌握。
我们之前学了Docker镜像、Docker容器,现在我们又学了DockerFile,这3者的关系如下:
18.3. DockerFile指令
DockerFile的常用指令如下:
指令 | 解释 | 描述 |
---|---|---|
FROM | 基础镜像,一切从这里开始构建 | 它的妈妈是谁(基础镜像) |
MAINTAINER | 镜像是谁写的,姓名+邮箱 | 告诉别人,你创造了它(维护者信息) |
RUN | 镜像构建的时候需要运行的命令 | 你想让它干啥(把命令前面加上RUN) |
ADD | 步骤,tomcat镜像,这个tomcat压缩包!添加内容 | 往它肚子里放点文件(COPY文件,会自动解压) |
WORKDIR | 镜像的工作目录 | 我是cd,今天刚化了妆(当前工作目录) |
VOLUME | 挂载到目录位置 | 给我一个存放行李的地方(目录挂载) |
EXPOSE | 指定暴露端口 | 我要打开的门是啥(端口) |
CMD | 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代 | 奔跑吧兄弟(进程要一直运行下去) |
ENTRYPOINT | 指定这个容器启动的时候要运行的命令,可以追加命令 | |
ONBUILD | 当构建一个被继承 dockerfile 这个时候就会运行 ONBUILD 的指令 触发指令 | |
COPY | 类似ADD,将我们的文件拷贝到镜像中 | |
ENV | 构建的时候设置环境变量 |
----------------------------EOF---------------------------------