1. docker images 的分层
首先我们需要理解的是docker images的分层原理
可能你看完这个还不太理解什么是分层, 不知道你是否有注意到当我们docker pull 一个image的时候, 他是一层一层的下载的
所以从这个就可以看出第一层我们已经有了, 可能是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
这样我们就可以一直使用属于我们自己创建的tomcat镜像
docker images
如果想要让别人也用到你的docker image, 那么就需要使用dockerFile上传到dockerHub里面啦