通俗易懂的docker(2)—什么是容器和镜像
原文链接:这里
0.前言
上一篇中简单介绍了什么是docker,然而在docker里面还有另外两个关键名词,就是容器和镜像,我当时查了好多资料,终于有所了解,现在来分享一下自己的理解。
1.容器、镜像、虚拟机
先引入一个情景。你买了一台安卓手机,4G运行内存,64G存储空间,这个就是物理机。然后你在安卓手机从应用商店上下载了一个微信,微信就是一个镜像。然后你登录上了你自己的微信账号,你登录账号后的微信就变成了一个运行的容器。
安卓手机——物理机
微信—镜像
登录自己账号的微信—容器
应用商店—docker仓库
(1)删除镜像,删除容器,暂停容器?
扩展来说,微信是一个镜像,QQ,王者荣耀都是一个镜像,安卓系统也可以是一个镜像。微信有不同的版本,你要下载哪个就从应用docker仓库下载对应版本就行。
登录自己账号的微信就变成一个容器了,它处于运行状态,你暂停容器的意思就是退出当前账号,不能聊天了。你删除一个容器的意思就是你不仅推出账号了还清除了账号资料了。当然你删除容器并不影响你的微信APP,只有删除微信APP才是删除镜像。
(2)一个镜像对应几个容器?
原则上来说,一个镜像可以对应多个容器。还是拿上面的例子举例,我们下载的微信后,有的安卓手机有克隆功能,可以克隆一个应用,克隆的基础就是以你下载的当前的微信版本为主,然后登录上另一个账号,这样就是一个新的容器。(这个地方的例子可能不太恰当,因为实际上你克隆出来的微信是要额外占空间的)
(3)容器和容器之间能相互通信吗?
大家用docker,基本都是装几个linux的镜像,然后装mysql和各种应用,进行通信交互,也就是一个完整的docker项目是由不同的镜像组合在一起的一个服务。我们可以单独修改一部分而不影响其他部分。那么容器和容器之间和上面描述有什么联系吗?我们可以这样想,有一天你下载了王者荣耀(镜像),你要登录,而且还是微信登录。你怎么办,你总不能拿刚下载下来的微信(镜像)登录吧,你必须先登录自己的微信账号,然后给王者荣耀授权,它才能用你登录了自己账号的微信(容器)登录,这个时候才能愉快的玩游戏。