一、dockerfile
1、什么是dockerfile
dockerfile是一个文本文件,本舰中包含了一条条指令用来构建镜像。每一条指定构建依次镜像,因此每一条指令的内容就是描述该层镜像应当如何构建。
dockerfile是自定义镜像的一套规则。
dockerfile由多条指令构成,每一条指令都会对应docker镜像中的每一层。
2、原理
①dockerfile中的每一个指令都会创建一个新的镜像层,这个镜像层是一个临时的容器,执行完成后将不存在。
②镜像层将被缓存和复用,后续的镜像层将基于前面的每一层,每一层都会有之前的缓存。
③当dockerfile的指令被修改,复制的文件变化或构建镜像时指定给的变量不同,那么对应的镜像层缓存就会失效,因为后续的操作需要更改前面的镜像层。
④某一层的镜像缓存失效后,它之后的镜像层就会失效即假如第一层失败,那么之后的都会失效。
⑤容器的修改并不会影响镜像,如果在某一层中添加一个文件,在下一层中删除它,镜像中依然还会存在该文件,必须在同一层镜像中删除。
二、docker镜像的创建
1、创建镜像的三种方法
①基于已有镜像创建
原理
将容器里面运行的程序及运行环境打包生成新的镜像。
docker commit [选项] [容器ID] 仓库名:标签
常用选项
-m 说明信息
-a 作者信息
-p 生成过程中停止容器的运行
模拟
②基于本地模板创建
wget http://download.openvz.org/template/precreated/debian-7.0-x86-minimal.tar.gz
使用wget命令导入为本地镜像
docker import debian-7.0-x86-minimal.tar.gz – debian:v1
或
cat debian