文章目录
- 一、Dockerfile简介
- 二、Dockerfile的构建过程
- 2.1 Dockerfile内容基础
- 2.2 Docker执行Dockerfile的流程
- 三、Dockerfile保留字指令
- 四、案例
一、Dockerfile简介
Dockerfile是用来构建Docker镜像的文本文件,它是由一条条构建镜像所需的指令和参数构成的脚本。如图是Dockerfile在Docker架构中的作用
二、Dockerfile的构建过程
2.1 Dockerfile内容基础
- 每条保留字指令都必须为大写字母且后面至少跟随一个参数
- 每条指令从上到下顺序执行,#代表注释
- 每条指令都会创建一个新的镜像层,并对镜像进行提交
2.2 Docker执行Dockerfile的流程
- docker从基础镜像运行一个容器
- 执行一条指令并对容器做出修改
- 执行一条类似“docker commit”的操作,提交一个新的镜像层
- docker再基于刚刚提交的镜像运行一个新容器
- 执行dockerfile中的下一条命令,直到所有命令执行完成
从应用软件的角度来看,Dockerfle、Docker镜像与Docker容器,分别代表软件的上不同阶段:
- Dockerfle是软件的原料
- Docker镜像是软件的交付品
- Docker容器是软件的运行态,即依照镜像运行的容器实例
他们之间的关系如图:
三、Dockerfile保留字指令
重点看下面几个
RUN 容器构建是运行的命令,等同于在终端操作的shell命令 例如:RUN yum -y install vim给容器按照上vim工具
ADD 将宿主机目录下的文件拷贝进镜像,并且字段处理URL和解压tar压缩包
COPY 作用和-v相同。类似ADD,将文件和目录拷贝进镜像,一般使用ADD
CMD 容器启动后要干的事情,Dockerfile中可以有多个CMD命令,但是只有最后一个生效,CMD会被docker run 之后的命令替换。cmd在docker run时运行,RUN在docker build时运行。
ENTRYPOINT 也是用来指定容器启动时要运行的命令,但是ENTRYPOINT不会被docker run之后的命令替换,而且这些命令行参数会被当作参数传给ENTRYPOINT指令指定的程序。ENTRYPOINT一般和CMD搭配使用
四、案例
Dockerfile制作镜像部署springboot项目