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