容器与镜像图解

docker镜像与容器的区别 docker 容器 镜像 区别_docker镜像与容器的区别

 

什么是镜像?

  镜像就是一堆只读层的统一视角(并非是一个单独的文件,而是具有层级结构)。

docker镜像与容器的区别 docker 容器 镜像 区别_docker镜像与容器的区别_02

 

文件系统,为这些层提供了一个统一的视角,这样就隐藏了多层的存在,在用户的角度看来,只存在一个文件系统。

 

你可以在你的主机文件系统上找到有关这些层的文件。需要注意的是,在一个运行中的容器内部,这些层是不可见的。在我的主机上,我发现它们存在于/var/lib/docker目录下。 

docker镜像与容器的区别 docker 容器 镜像 区别_docker镜像与容器的区别_03

 

 

什么是容器?

区别在于容器最上面那一层是可读可写的。

docker镜像与容器的区别 docker 容器 镜像 区别_文件系统_04

 


要点:容器 = 镜像 + 可读层。并且容器的定义并没有提及是否要运行容器

 

总结:可以将镜像是文件,容器是进程。容器是基于镜像创建的,即容器中的进程依赖于镜像中的文件(镜像就是容器的系统文件),这里的文件包括进程运行所需要的可执行文件,依赖软件,库文件,配置文件等等。也可以将容器看做是镜像运行的一个实例,或者是文件与进程的关系。

 

每运行一个容器,都会在镜像上加一个可写层,但这一层并不会改变镜像本身,这也就是为什么,有时候你如果同一个镜像,启动多个容器,里面的内容不会变,但是如果将可写层持久化,就要通过commit命令来把可写层写到磁盘,即生成新的镜像。