目录
什么是 dockerfile
docker镜像制作的工作逻辑
Dockerfile的基本结构
Dockerfile格式 案例:
Build镜像
我们之前学习,docker的镜像都是官方给定义好的,我们可不可以 自己创造镜像呢。
什么是 dockerfile
===============
-
dockerfile,相当于是一个文档,客户可以基于dockerfile生成新的容器
-
dockerfile 是用来制作镜像的源码文件,是构建容器过程中的指令。
-
docker能够读取dockerfile的指定进行自动构建容器,基于dockerfile制作镜像
-
每一个指令都会创建一个镜像层,即镜像都是多层叠加而成,因此,层越多,效率越低,创建镜像,层越少越好。因此能在一个指令完成的动作尽量通过一个指令定义。
白话文:名为Dockerfile 的文件,里面写了 Dockerfile的必需存在的几点,然后build一下 他就变成了镜像。
docker镜像制作的工作逻辑
===============
-
首先需要有一个制作镜像的目录,该目录下有个文件,
-
名称必须为Dockerfile,Dockerfile有指定的格式
-
这个是在docker的convention,如果用过C语言的makefile,应该就会了解。都是一些编程语言的约定。固定的名字,docker程序代码中写好的。
-
自己命名的话: docker build -t test -f dockerfile .
-
#号开头为注释。指定默认用大写字母来表示,以区分指令和参数。
-
docker build 读取Dockerfile是按顺序依次Dockerfile里的配置,且第一条非注释指令必须是FROM 开头,表示基于哪个基础镜像来构建新镜像。可以根据已存在的任意镜像来制作新镜像。
Dockerfile的基本结构
===============
Dockerfile 一般分为四部分:
-
基础镜像信息
-
维护者信息
-
镜像操作指令
-
容器启动时执行指令
接下来详细介绍
‘#’ 是 Dockerfile 中的注释。
Docker以从上到下的顺序运行Dockerfile的指令。为了指定基本映像,第一条指令必须是FROM。一个声明以#字符开头则被视为注释。可以在Docker文件中使用RUN,CMD,FROM,EXPOSE,ENV等指令。
vim Dockerfile
Dockerfile格式 案例:
执行顺序是从上到下,依次执行
| 指令 | 描述 |
| — | — |
| FROM | 构建新景象是基于那个镜像 |
| MAINTAINER | 镜像维护者姓名或邮箱地址 |
| LABEL | 给镜像添加信息。 |
| RUN | 构建镜像时运行的Shell命令 |
| ADD | 将本地文件添加到容器中 |
| COPY | 拷贝文件或目录到景象中 |
| ENV | 设置环境变量 |
| USER | 为RUN、CMD 和 ENTRYPOINT 执行命令指定运行用户 |
| ARG | 由外部启动时必须传入的参数,在容器启动时用–build-arg传递参数 |
| EXPOSE | 声明容器运行服务端口 |
| HEALTHCHECK | 容器中服务健康检查 |
| VOLUME | 用于指定持久化目录 |
| WORKDIR | 为 RUN、CMD、ENTRYPOINT、COPY 和 ADD 设置工作目录 |