Docker两个问题的讨论

docker中的container到底可不可以理解为一个操作系统?

先表明态度,我的理解是,NO。

主机级虚拟化

容器级虚拟化

  容器通过Docker的守护进程(Docker daemon)来进行创建,现在docker公司对于Docker daemon进行了重构,现在这个任务被拆解为一个名叫containerd工具来管理容器的生命周期,由LXC(现在是runc)基于库文件来启动创建容器。

简单说明

  主机级虚拟化提供应用服务通过虚拟出一个VM来提供服务

  容器级虚拟化通过Docker daemon及其工具直接使用宿主机内核来直接提供集装箱一样的服务

  这一张网上的图片说的比较生动,在lHOST启动中,从bootfs动bootloader来引导kernel,在Docker中,docker的images通过HOST OS的kernel和LXC程序(现在是RUNC)来启动一个镜像,当镜像成功被启动后,进入rootfs,蓝灰层也会被卸载掉。而rootfs就是linux文件系统。

 

 

 

docker中处于stop的container数据被存储在哪里?

  在openstack中,虚拟机在挂起或关闭状态时,所有的资源都会被释放,各个节点将虚拟机的信息记录下来,作为一个模板存储进数据库,当这个虚拟机恢复到启动状态时的过程,就是各个节点通过已经记录下的模板重新创建一个虚拟机。

  我的推测,docker采用分层构建镜像的方式,通过只读层来记录容器的状态,例如基于Dockerfile构建容器时,更改Dockerfile中的顺序,容器启动速度明显变慢。说明重新构建。

posted @ 2019-09-27 10:39  fissure  阅读(181)  评论(0编辑  收藏  举报