楊浚
摘 要:簡要介紹了docker容器的核心技術namespace和cgroup,以及實現容器隔離的方法。
關鍵詞:Docker;namespace;cgroup;虛擬化;linux
Docker當前的定義是一個開源的容器引擎,可以方便地對容器進行管理,封裝整個軟件的運行環境,為開發者和系統管理者提供用于開發、設計、構建、測試、發布、運行的應用平臺。得益于其輕量級的虛擬化,以及分層鏡像應用,Docker在磁盤、性能和效率上比傳統虛擬化有明顯的優勢。
Docker容器的核心技術就是namespace和cgourp,Docker本身就是軟件,其本質就是主機上的進程,它通過linux內核提供的namespace功能實現了資源的隔離,通過cgroup實現了資源的限制。Namespace隔離有6種,分別是UTS(主機名)、IPC(內部進程通信)、PID(進程號)、Network(網咯設備、端口等)、Mount(掛載點)、User(用戶)。通過namespace,可是使得不同容器里的進程置于一個獨立的系統運行環境里,不能互相感知到,達到了隔離的目的。最常用的namespace的API就是clone(),通過clone()方法,可以在創建新進程的同時創建namespace,代碼如下:
#define _GUN_SOURCE
#include
#include