- DevOps with Kubernetes
- Hideto Saito Hui Chuan Chloe Lee Cheng Yang Wu
- 308字
- 2021-07-02 13:41:46
Resource isolation
When an application launches, it consumes CPU time, occupies memory space, links to its dependent libraries, writes to the disk, transmits packets, and may access other devices as well. Everything it uses up is a kind of resource, which is shared by all the programs on the same host. To increase the efficiency of resource utilization, we may try to put as many applications as possible on a single machine. However, the complexity involved in making every application work in a box effectively increases exponentially, even if we just want to run two applications, let alone work with tons of applications and machines. Because of this, the idea to separate the resources of a physical computing unit into isolated pieces soon became a paradigm in the industry.
You may have heard of terms such as Virtual Machines (VMs), BSD jails, Solaris containers, Linux containers, Docker, and others. All of these promise us similar isolation concepts but use fundamentally distinct mechanisms, so the actual level of isolation differs. For example, the implementation of a VM involves full virtualization of the hardware layer with a hypervisor. If you want to run an application on a VM, you have to start from a full operating system. In other words, the resources are isolated between guest operating systems running on the same hypervisor. In contrast, Linux and Docker containers are built on top of Linux primitives, which means they can only run in an operating system with those capabilities. BSD jails and Solaris containers work in a similar fashion, but on other operating systems. The following diagram illustrates the isolation relationship of the Linux container and VMs. The container isolates an application on the operating system layer, while VM-based separation is achieved by the underlying hypervisor or host operating system:

- Java逍遙游記
- Learning C# by Developing Games with Unity 2020
- HoloLens Beginner's Guide
- AngularJS Web Application Development Blueprints
- 數(shù)據(jù)結(jié)構(gòu)簡明教程(第2版)微課版
- Python高效開發(fā)實戰(zhàn):Django、Tornado、Flask、Twisted(第2版)
- 老“碼”識途
- Java程序設(shè)計與實踐教程(第2版)
- JavaScript by Example
- C++ 從入門到項目實踐(超值版)
- Arduino家居安全系統(tǒng)構(gòu)建實戰(zhàn)
- Scala編程(第5版)
- 微課學(xué)人工智能Python編程
- 自學(xué)Python:編程基礎(chǔ)、科學(xué)計算及數(shù)據(jù)分析(第2版)
- Android Game Programming by Example