1. docker images 的分层

首先我们需要理解的是docker images的分层原理

docker分步构建_docker


可能你看完这个还不太理解什么是分层, 不知道你是否有注意到当我们docker pull 一个image的时候, 他是一层一层的下载的

docker分步构建_docker_02


所以从这个就可以看出第一层我们已经有了, 可能是centos的基本文件命令,因为我们的redis要基于一个linux系统, 我们就不需要再去下载了. 直接进行层级复用即可, 这样就快很多并且下载的文件体积也小很多

这是第一个原因为什么docker快

第二个原因就是拿VM和docker相比, 我们建立一个VM, 需要去模拟他的整个OS系统, 那就需要有自己的kernel内核. 每一台虚拟机就有一个自己的内核. 但是相比于docker, docker是直接复用了主机host的kernel, 而不是自己维护自己的内核. docker pull 下载下来的文件也只是比如说我们的Centos里面必要的指令集.
它包含运行某个软件所需要的所有内容,包括代码,运行时(一个程序在运行或者在被执行的依赖)、库,环境变量和配置文件。内核直接复用我们host的内核即可 . 相比于VM那就快的多了.

2. docker commit

接下来就自己发布一个属于自己的镜像
当我们运行一个Tomcat的镜像时, 他的webapps里面默认是没有文件的. 于是此时我们想要自己加一点文件到webapps里面去, 那么就相当于我自己加了一层数据层, 但其实是基于官方给的tomcat镜像这个官方的tomcat镜像又分了很多层, 现在我想打包, 之后都使用这一个tomcat镜像该怎么办呢. 此时就可以使用docker commit 命令了

docker commit -a=“作者” -m=“image的描述” 容器ID 目标镜像名:[TAG]

docker commit -a=“wjh” -m=“add webapps” c8d2a8e64fc6 tomcat02:1.0

docker分步构建_docker分步构建_03


这样我们就可以一直使用属于我们自己创建的tomcat镜像

docker images

docker分步构建_linux_04


如果想要让别人也用到你的docker image, 那么就需要使用dockerFile上传到dockerHub里面啦