文章目录

  • 一、Dockerfile简介
  • 二、Dockerfile的构建过程
  • 2.1 Dockerfile内容基础
  • 2.2 Docker执行Dockerfile的流程
  • 三、Dockerfile保留字指令
  • 四、案例


一、Dockerfile简介

Dockerfile是用来构建Docker镜像的文本文件,它是由一条条构建镜像所需的指令和参数构成的脚本。如图是Dockerfile在Docker架构中的作用

docker ftp 容器 docker-file_Docker

二、Dockerfile的构建过程

2.1 Dockerfile内容基础

  1. 每条保留字指令都必须为大写字母且后面至少跟随一个参数
  2. 每条指令从上到下顺序执行,#代表注释
  3. 每条指令都会创建一个新的镜像层,并对镜像进行提交

2.2 Docker执行Dockerfile的流程

  1. docker从基础镜像运行一个容器
  2. 执行一条指令并对容器做出修改
  3. 执行一条类似“docker commit”的操作,提交一个新的镜像层
  4. docker再基于刚刚提交的镜像运行一个新容器
  5. 执行dockerfile中的下一条命令,直到所有命令执行完成

从应用软件的角度来看,Dockerfle、Docker镜像与Docker容器,分别代表软件的上不同阶段:

  • Dockerfle是软件的原料
  • Docker镜像是软件的交付品
  • Docker容器是软件的运行态,即依照镜像运行的容器实例

他们之间的关系如图:

docker ftp 容器 docker-file_Docker_02

三、Dockerfile保留字指令

docker ftp 容器 docker-file_docker_03


重点看下面几个

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搭配使用

docker ftp 容器 docker-file_docker_04

四、案例

Dockerfile制作镜像部署springboot项目