1. 程式人生 > 實用技巧 >docker Linux namespace(五)-Mount

docker Linux namespace(五)-Mount

眾所週一,在Linux上使用容器有個天大的好處,就是可以把不同的系統打包執行,雖然你的宿主機可能就是CentOS,但是如果使用了容器技術,你可以同時執行alpline,Debian,Ubuntu等其他的你喜歡的發行版,關鍵是這些容器共享宿主的資源,因此,每個容器是非常輕量級的,不同虛擬機器,這是如何做到的?

這裡先定下今天的目標,通過使用pivot_root系統呼叫以及Mount名稱空間。首先我們要回顧寫前面幾篇系列文的程式碼,羅馬不是一天建成的,我們的demo也經過幾次迭代,才有今天的基礎。

丟擲問題

首先回顧下上篇文章寫的程式,分析下執行結果

buntu@VM-0-7-ubuntu:~/workspace/gons$ mount | wc
     58     348   11624
ubuntu@VM-0-7-ubuntu:~/workspace/gons$ go build ns-proc.go
ubuntu@VM-0-7-ubuntu:~/workspace/gons$ ./ns-proc
arg0=./ns-proc,
arg0=initFuncName,

>> namespace setup code goes here <<

-[namespace-process]-# mount | wc
     58     348   11624
-[namespace-process]-# exit

在開始編譯之前,先檢查下宿主機上的掛載情況,鑑於掛載的有點多,也不好直接看,所以直接就看統計資料就好

然後開始編譯並執行demo,可以從名字看出當前是在宿主上還是demo容器上。在demo程序初始化完成,運行了和宿主機上同樣的操作mount | wc從輸出結果來看,再和宿主機的結果對比,發現結果是一致的,呃呃這隱約感覺到不妥