1、Dockerfile介绍
Dockerfile是用来构建docker镜像文件的命令参数脚本。
构建步骤:
- 编写一个Dockerfile文件
- 执行docker build构建成为一个镜像
- docker run 运行镜像为容器
- docker push 发布镜像(Docker Hub,阿里云镜像仓库)
先来看以下官方是怎么做的,随便打开一个:
比如点击一个centos7,跳转过来其实就是一个Dockerfile:
很多官方镜像都是基础包,很多功能都没有,通常自己搭建添加。官方既然可以制作镜像,我们也可以。
2、Dockerfile构建过程
从以上两个图:
1、每个保留关键字(指令)都是大写
2、从上往下执行指令
3、每一个指令都会创建提交一个新的镜像层
dockerfile是面向开发的,以后要发布项目,都要做镜像,就需要编写dockerfile文件。Dockerfile逐渐成为企业交付标准,不是像以前一样发布jar或war包,而已哟啊将jar或war和环境一起做成镜像。
Dockerfile:构建文件,定义了一切的步骤,像源代码
Docker image:通过Dockerfile构建生成的镜像文件,最终发布和运行的产品(以前:jar/war,以后:docker image)
Docker容器:镜像运行起来提供服务的事例
3、Dockerfile指令
FROM #基础镜像,镜像的一切从这里开始构建
MAINTAINER #镜像的创建者,一般格式:姓名+邮箱
ADD #添加内容,会自动解压。像第一步FROM以centos为基础,可以添加tomcat压缩包,这样这个镜像就包含了tomcat服务
WORKDIR #镜像的工作目录
VOLUME #挂载目录,如果镜像没设置,就需要在启动镜像的时候使用-v命令指定
EXPOSE #暴露端口配置,也是一样,如果镜像没配置,就需要在启动镜像的时候使用-p指定
RUN #镜像构建的时候需要运行的命令
COPY #类似ADD,将文件拷贝到镜像中
CMD #指定容器启动的时候需要运行的命令,比如CMD "---end---" 输出结束信息。只有最后一个会生效
ENTRYPOINT #指定容器启动的时候需要运行的命令,可以追加命令
ENV #构建的时候配置环境变量
4、实战测试
先启动一个官方的centos:
可以看到,官方的镜像很多命令都是没有的,比如上图的vim和ifonfig。
1.编写Dockerfile:
FROM centos
MAINTAINER alinx<78787787787@qq.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo "---end---"
CMD /bin/bash
2.通过编写的文件构建镜像
docker build -f mydockerfile -t mycentos:1.0 .
创建成功:
3.测试运行
还可以通过docker history命令查看镜像是怎么制作的: