镜像制作
什么是Docker镜像
在 Docker 的术语里,一个只读层被称为镜像,一个镜像是永久不会变的。
由于 Docker 使用一个统一文件系统,Docker 进程认为整个文件系统是以读写方式挂载的。 但是所有的变更都发生顶层的可写层,而下层的原始的只读镜像文件并未变化,所以Docker镜像是分层的
构建镜像一般有三种方式
基于Dockerfile(最常用)创建
基于已有的镜像容器进行创建镜像
基于本地模板进行构建
Docker镜像的分层
Dockerfile中每个指令都会创建一个新的镜像层
镜像层将被缓存和复用
当Dockerfile的指令修改了,复制的文件变化了,或者构建镜像时指定的变量不同了,对应的镜像层缓存就会失效
某一层的镜像缓存失效之后,它之后的镜像层缓存都会失效
镜像层是不可变的,如果在某一层中添加一个文件,然后再下一层中删除它,则镜像中依然会包含该文
Dockerfile常用操作指令
镜像建立
基于已有镜像创建
将容器里运行的程序和运行环境打包成新的镜像
docker commit 选项 容器ID/名称 仓库名称:标签
常见选项:
-m 说明信息
-a 作者信息
-p 生成过程中停止容器的运行
[root@5centos ~]# docker create -it centos:8 /bin/bash ##创建容器
d61a1f121f3a48ed81ef00da86bb7c573f81235a1fcffb6115e439fd64c328bd
[root@5centos ~]# docker ps -a ##查看ID
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d61a1f121f3a centos:8 "/bin/bash" 30 seconds ago Created wizardly_varahamihira
[root@5centos ~]# docker commit -m "基于镜像建" -a "橘籽酱" d61a1f121f3a oracentos:8 ##基于已有容器镜像创建
sha256:cd067ed5ce2254d10b1d7f96b97ba371cfac18899e53b1d39594ac56dd21f73b
[root@5centos ~]# docker images ##查看镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
oracentos 8 cd067ed5ce22 36 seconds ago 237MB
2233466866/centos8 latest a2f2e369e78e 6 months ago 237MB
centos 8 a2f2e369e78e 6 months ago 237MB
基于本地模板创建
通过导入系统模板文件可以生成镜像,模板可以从OPENVZ开源项目下载
地址为:https://wiki.openvz.org/Download/template/precreated
或者使用wget下载:wget http://download.openvz.org/template/precreated/debian-7.0-x86-minimal.tar.gz
[root@5centos opt]# ls
centos8 con