Dockerfile介绍
Docker通过读取Dockerfile里面的内容可以自动build image,Dockerfile是一个包含了build过程中需要执行的所有命令的文本文件。也可以理解为Dockfile是一种被Docker程序解释的脚本,由一条一条的指令组成,每条指令对应Linux系统下面的一条命令,由Docker程序将这些Dockerfile指令翻译成真正的Linux命令。Dockerfile有自己书写格式和支持的命令,Docker程序解决这些命令间的依赖关系,类似于Makefile。
Docker程序将读取Dockerfile,根据指令生成定制的image。相比image这种黑盒子,Dockerfile这种显而易见的脚本更容易被使用者接受,它明确的表明image是怎么产生的。有了Dockerfile,当我们需要定制自己额外的需求时,只需在Dockerfile上添加或者修改指令,重新生成image即可,省去了敲命令的麻烦。
docker构建镜像的方法: commit、dockerfile
1、使用commit来构建镜像:
commit是基于原有镜像基础上构建的镜像,使用此方法构建镜像的目的:保存镜像里的一些配置信息和修改的信息。相当于一个镜像的快照。
2、使用dockerfile来构建镜像:
dockerfile是快速构建所需(自定义)镜像。
dockerfile的指令:
FROM:指定基础镜像(FROM是必备的指令,并且必须为第一条指令)。
RUN: 用来执行命令行命令。其基本格式:
shell格式: RUN <命令> ,输入在bash环境中的命令即可,一个dockerfile允许使用RUN不得超过127层,所以,使用一次RUN, 使用 ‘ /' 换行,使用‘ && '执行下一条命令。一般使用此种格式;
exec格式: RUN <"可执行文件", "参数1", "参数2">,此种方式像是函数调用中的格式;
COPY: 复制文件。 其基本格式:
格式1:COPY <源路径>...<目标路径>
格式2:COPY [“<源路径1>”,....."<目标路径>"]
ADD: 更高级的复制文件,在COPY的基础上增加了一些功能,如果复制的是压缩包的话,会直接解压,而不需要在使用RUN解压;
CMD:容器启动命令。其基本格式:
shell格式: CMD <命令>
exec格式: CMD ["可执行文件", "参数1", "参数2"...]
参数列表格式: CMD [“参数1”, “参数2”...],在指定了ENTRYPOINT指令后,用CMD指定具体的参数
ENTRYPOINT: 入口点。其基本格式分为exec和shell,
ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及参数。ENTRYPOINT在运行中可以替代,不过比CMD繁琐,需要通过docker run 的参数--entrypoint 来指定。当指定了ENTRYPOINT后,CMD的含义就发生了改变,不在是直接运行其命令,而是将CMD的内容作为参数传递给ENTRYPOINT指令。其执行时就变成了: <ENTRYPOINT> "<CMD>"
ENV: 设置环境变量。(都可以使用这里使用的变量)其基本格式:
格式1:ENV <key> <value>
格式2:ENV <key1>=<value1> <key2>=<value>...
ARG: 构建参数。构建参数和ENV的效果一样,都是设置环境变量,所不同的是ARG所构建的环境变量在将来容器运行时是不存在的。其基本格式:
新闻热点
疑难解答