首先我们来讨论docker镜像和docker容器的区别。docker的镜像是在docker仓库中开源的应用,是以分层的、可以被LXC/libcontainer理解的文件存储格式。docker应用被发布到docker仓库中,形成了docker镜像,使用时只需从仓库中下载到本机,镜像在某种意义上来说是一个个应用的模板。而容器则指的是以镜像为基础,在虚拟机中运行你所需要的应用,这个启动的虚拟机就是容器,因为docker的分层机制,不同应用如果有部分或全部相同的运行环境,那么这些应用可以共享一个底层,而数据的产生和修改只在最上面的空白层中发生,所以容器有隔离不同应用的功能。
那我们如何对docker容器的状态修改或者版本更迭?因为docker容器层次有优先级,上层会覆盖掉底层的文件,所以docker容器会新增加一个空白层,在该层进行底层文件的增量修改,形成新的容器,也就是一个新的应用运行环境。我们也可以把这个镜像上传到docker仓库中,如果仓库中已经有上一个版本的镜像存在,那么只需要上传新增的层就可以了,这就是docker容器版本更迭的方式。