0
点赞
收藏
分享

微信扫一扫

传统linux系统与Docker镜像区别


典型的Linux文件系统





传统linux系统与Docker镜像区别_根文件系统


image


典型的Linux文件系统由bootfs与rootfs两部分组成,bootfs(boot file system)主要包含bootloader和kernel,bootloader主要是引导加载kernel,当kernel被加载到内存中后bootfs就被unmount。

内核启动后开启的三个进程

内核启动后会开启三个进程,分别是:

  • 进程0(idle进程),空闲进程,也就是死循环。
  • 进程1(init进程),挂载根文件系统,并执行Linuxrc这个应用程序从内核态转为用户态开启用户态的进程(init进程),逐步开启其他进程。
  • 进程2(kthreadd进程)linux内核的守护进程,负责提供操作系统的核心功能(进程调度、内存管理、设备管理、文件系统)的实现

Rootfs的作用

根文件系统(rootfs)的作用:

  1. init进程的应用程序(Linux)在根文件系统上
  2. 根文件系统提供了根目录/
  3. 内核启动后的应用程序配置(etc目录)在根文件系统上。
  4. shell命令程序在根文件系统上。
  5. /lib目录下的库文件等

传统linux系统

传统的Linux加载bootfs时会先将rootfs设为read-only,然后在系统自检之后将rootfs从read-only改为read-write,然后就可以在rootfs上进行写和读的操作。

Docker镜像

Docker镜像,它在bootfs自检完毕之后并不会把rootfs的read-only改为read-write。而是利用union mount(Union FS的一种挂载机制)将一个或多个的rootfs加载到之前的read-only的rootfs层之上。 在加载了这么多层的rootfs之后,仍然让它看起来只像是个文件系统,在Docker的体系里把union mount的这些read-only的rootfs叫做docker的镜像。此时的每一层rootfs都是read-only的,不能对其进行操作。当创建一个容器时,也就是将Docker镜像进行实例化,系统会在一层或是多层read-only的rootfs之上分配一层空的read-write的rootfs

Docker容器共享宿主机内核,一个内核可对应多个操作系统版本。如果服务对系统内核没有要求,可以通过对服务Docker化来解决部署烦恼,Docker化的服务可移植性更高、使用更快捷。如果想学习更多的Docker知识,可以关注微信公众号:WEL测试



传统linux系统与Docker镜像区别_根文件系统_02


image

举报

相关推荐

0 条评论