容器概念與Linux Container原理


一、容器與LxC

  在像KVM等眾多主機虛擬化解決方案中,對每一個虛擬機實例提供的是從底層硬件開始一直到上層的環境,在硬件級進行資源划分。虛擬機的內核是運行在硬件內核之上的。由於每個虛擬實例都有自己的運行內核,所以各實例之間有非常好的隔離性。

  但在某些場景中使用KVM等虛擬機過於笨重,例如用戶僅僅只是需要在用戶空間運行某一個程序,沒有必要管理用戶空間內核再到系統內核,可以將用戶空間內核剝離掉,直接由系統空間提供運行程序的權限即可,也就是說在一個內核空間上構建出相互隔離的空間,用一種可以將各用戶空間在同一內核級中會互相產生干擾的方式隔離出來,也就是說在用戶空間就做到各個空間互相隔離,這就是容器的概念。

  用戶空間中可以只跑一個進程,也可以在一個用戶空間中跑多個進程。跑多個進程時容器的功能就類似與主機虛擬化技術,LxC就是這一種在用戶空間上就相互隔離的虛擬化容器技術。而另一種容器技術中,每個用戶空間只負責運行一個進程且相互隔離。這樣每一個進程所依賴的環境在各個容器中的相互獨立。

  下面是Wiki對LXC的解釋:

  LXC (Linux Containers) is an operating-system-level virtualization method for running multiple isolated Linux systems (containers) on a control host using a single Linux kernel.
  The Linux kernel provides the cgroups functionality that allows limitation and prioritization of resources (CPU, memory, block I/O, network, etc.) without the need for starting any virtual machines, and also namespace isolation functionality that allows complete isolation of an applications' view of the operating environment, including process trees, networking, user IDs and mounted file systems.

二、安裝LxC和簡單使用

yum install -y lxc lxc-templates

  簡單使用:
 lxc-checkconfig :檢查系統環境是否滿足容器使用要求;

 lxc-create :創建lxc容器;

  例: lxc-create -n NAME -t TEMPLATE_NAME 

 lxc-start :啟動容器;

  例: lxc-start -n NAME -d 
  Type <Ctrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a itself

 lxc-info :查看容器相關的信息;

  例: lxc-info -n NAME 

 lxc-info -n NAME :附加至指定容器的控制台;

  例: lxc-console -n NAME -t NUMBER 

 lxc-stop :停止容器;

 lxc-destory :刪除處於停機狀態的容器;

 lxc-snapshot :創建和恢復快照;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM