跳转至

Dockerfile

Dockerfile

  • 构建 docker 镜像的构建文件,命令脚本
  • Dockerfile 是 Docker 中用于定义镜像自动化构建流程的配置文件,在 Dockerfile 中,包含了构建镜像过程中需要执行的命令和其他操作。通过 Dockerfile 我们可以更加清晰、明确的给定 Docker 镜像的制作过程,而由于其仅是简单、小体积的文件,在网络等其他介质中传递的速度极快,能够更快的帮助我们实现容器迁移和集群部署
为什么要写dockerfile,一般的构建步骤是什么?
  • 编写一个 Dockerfile 文件
  • docker build 构建成为一个镜像
  • docker run 运行镜像
  • docker push 发布镜像至远程仓库

dockerfile 基础知识

image-20230430094813086

Docker 镜像逐渐成为企业交付的标准,必须要掌握!

  • DockerFile: 构建文件,定义了一切的步骤,源代码。
  • Dockerlmages: 通过 DockerFile 构建生成的镜像,最终发布和运行的的产品。
  • Docker 容器: 容器就是基于镜像运行起来提供服务的。
Dockerfile的优点
  • Dockerfile 的体积远小于镜像包,更容易进行快速迁移和部署。
  • 环境构建流程记录了 Dockerfile 中,能够直观的看到镜像构建的顺序和逻辑。
  • 使用 Dockerfile 来构建镜像能够更轻松的实现自动部署等自动化流程。
  • 在修改环境搭建细节时,修改 Dockerfile 文件要比从新提交镜像来的轻松、简单。

Docker file 指令

  • Dockerfile 两种形式,一种是注释行,另一种是指令行(由指令与其相应的参数所组成)
  • 每个保留关键字(指令)都必须是大写字母,# 表示注释
  • 执行从上到下顺序执行,每个指令都会创建一个新的镜像层,并提交。

如果进行细分,我们可以将 Dockerfile 的指令简单分为五大类。

指令 解释
基础指令 用于定义新镜像的基础和性质。
控制指令 是指导镜像构建的核心部分,用于描述镜像在构建过程中需要执行的命令。
引入指令 用于将外部文件直接引入到构建镜像内部。
执行指令 能够为基于镜像所创建的容器,指定在启动时需要执行的脚本或命令。
配置指令 对镜像以及基于镜像所创建的容器,可以通过配置指令对其网络、用户等内容进行配置。

常见 Dockerfile 指令

熟悉 Dockerfile 的指令是编写 Dockerfile 的前提,这里是最常见的 Dockerfile 指令,它们基本上囊括了所有 Dockerfile 中90%以上的工作

指令 解释 通俗解释
FROM 基础镜像,一切从这里开始构建 这个镜像的爸爸是谁?
MAINTAINER 镜像的作者,姓名+邮箱 告诉别人,谁在维护他
RUN 镜像构建的时候需要运行的命令 想让他干啥
ADD COPY 文件,会自动解压 直接给点创业资金
COPY 类似 ADD,将文件宝贝到镜像中 给你个主意,需要你自己挣钱
WORKER 镜像的工作目录 给指定一个工作的地点,某个大厦
VOLUME 挂载的目录(设置卷,挂在主机目录) 给一个手机,有办法把赚到的钱从大厦给到老家
EXPOSE 指定对外的端口 给一个营业执照,让别人能看到
CMD 指定容器启动的时候运行的命令,可以被替换 指定工作内容、上班时该干什么
ENTRYPOINT 指定容器启动的时候运行的命令,只能追加
ONBUILD 当构建一个被继承DockerFile
ENV 构建的时候设置环境变量