- 都知道虚拟机和docker的区别,虚拟机是每个虚拟机内跑独立的os,os层面隔离。docker是同一个os上,使用linux的namespace机制做资源隔离,为什么我们docker image还需要依赖一个linux的发行版,一般最小是busybox呢,那我的进程跑起来,到底是用我容器内的os还是宿主机的os呢。
- 第一个问题:镜像里是不是一定要有一个os。答案是不是,我们想想os是啥,os是一个kernel+外围系统,,kernel是负责和各个硬件交互,比如网卡,磁盘等。如果我们的镜像可以直接调kernel的接口,那其实什么都不依赖。
- 第二个问题:为什么要依赖linux的发行版:我们其实依赖的是这些发行版在kernel之上包装的libary。比如文件系统,不同的操作系统有不同的文件系统,到最底层其实都是调用host上os的kernel的接口。
- 第三个问题:容器跑起来,到底是依赖容器内的os还是host的os呢。答案是不同的容器是共享host os的kernel的,kernel之上的东西各个容器是独立的。也就是我可以跑一个ubuntu的容器,也可以跑一个centos的容器。
- 第四个问题:linux host上可以跑windows的容器吗,答案是不行,因为kernel是不同的,但现在docker支持在windows server上跑windows的容器了
posted @
2021-05-13 22:07
Nooooone
阅读(
51)
评论()
收藏
举报