打赏

容器和虚拟化

 
什么是容器?
Linux容器是与系统其它部分隔离开的一系列进程,从另一个系统镜像运行,并由该镜像提供支持进程所需的全部文件(环境文件)。
Linux容器就是一个隔离的空间中,运行的进程,这个隔离的空间有自己的根文件系统;拥有自己的网络,主机名等。
 
容器和虚拟化的区别:
虚拟化使得许多操作系统可同时在单个系统上运行。
容器只能共享操作系统进程,将应用进程与系统其它部分隔离开,Linux容器需要内核的支持,namespace【隔离】和cgroup【硬件资源的限制】。容器不需要开机启动流程。
 
KVM虚拟化:
需要CPU硬件的支持,需要模拟硬件,可以运行不同的操作系统,启动时间分钟级(开机启动流程)。
容器虚拟化:
不需要硬件的支持,不需要模拟硬件,共用宿主机的内核,启动时间秒级(没有开机启动流程)。
总结:
1、与宿主机使用同一个内核,性能损耗小。
2、不需要指令级模拟。
3、容器可以再CPU核心的本地运行指令,不需要任何专门的解释机制。
4、避免了准虚拟化和系统调用替换中的复杂性。
5、轻量级隔离,在隔离的同时还提供共享机制,以实现容器与宿主机的资源共享。
 
容器内网访问外网通过docker0网卡转发到宿主机的eth0网卡,外网入内网通过IPtables端口映射。
posted @ 2018-12-10 20:23  芹溪  阅读(818)  评论(0编辑  收藏  举报