通过上述实验可知,当一个镜像有多个标签时,在执行docker rmi 标签名删除镜像时,其实只是删除了对应镜像的某一个标签而已,当一个镜像只有唯一一个标签时,docker rmi 标签名才会删除对应的镜像。
承接上篇的docker简介,实际上,镜像(image)其实就是容器(container)的模板,容器都是通过镜像创建的,所以镜像中包含启动容器所需要的所有文件系统结构和内容。简单来讲,镜像是一个特殊的文件系统,它提供了容器运行时所需的程序、软件库、资源、配置等静态数据。
前文说过,如果想要用docker运行一个程序,则必须先获取到这个程序的镜像,比如,如果我想要运行一个nginx容器,就必须先有一个nginx镜像,我们可以基于同一个nginx镜像,启动多个nginx容器,就好比基于同一套nginx模板,启动了多个nginx服务一样,此处我们也可以类比着“虚拟机”去理解,程序镜像就好比虚拟机的“模板机镜像”,我们可以通过“模板机镜像”快速的创建出可运行的“虚拟机”,docker也差不多,只不过docker是通过“程序镜像”创建出可运行的“程序容器”,最终对外提供服务,镜像是磁盘中的文件,基于镜像创建出容器,运行的容器就是内存中的进程。
如果你非要拿 Docker 和 k8s 进行比较,其实你更应该拿 Docker Swarm 和 k8s 比较。Docker Swarm 是 Docker 自家针对集群化部署管理的解决方案,优点很明显,可以更紧密集成到 Docker 生态系统中。