chroot 就是 change root,也就是可以改變某程序的根目錄,使這個程式不能訪問該目錄之外的其他目錄,增進系統的安全性,限制使用者能做的事。以下例子說明:/home/opt_user/rootfs 目錄下有一些目錄和檔案,然後使用 chroot 命令啟動乙個 sh 程序,並且把 /home/opt_user/rootfs 目錄作為 sh 程序的根目錄。
$ cd /home/opt_user/rootfs
$ ls
bin busybox.tar dev etc home proc root sys tmp usr var
$ chroot /home/opt_user/rootfs /bin/sh
/ # /bin/ls /
bin busybox.tar dev etc home proc root sys tmp usr var
namespace 是 linux 核心的一項功能,該功能對核心資源進行隔離,使得容器中的程序都可以在單獨的命名空間中執行,並且只可以訪問當前容器命名空間的資源。namespace 可以隔離程序id、主機名、使用者id、檔名、網路訪問和程序間通訊等相關資源。
docker 主要用到以下五種命名空間:
● pid namespace:程序id隔離
● net namespace:網路介面隔離
● mnt namespace:檔案系統掛載點隔離
● ipc namespace:資訊量、訊息佇列和共享記憶體隔離
● uts namespace:主機名和網域名稱隔離
cgroups 是一種 linux 核心功能,可以限制和隔離程序的資源使用情況(cpu、記憶體、磁碟i/o、網路等)。在容器的實現中,cgroups 通常用來限制容器的cpu和記憶體等資源的使用。
cgroups 主要提供了以下四大功能:
● 資源限制:對任務資源總額進行限制,比如設定任務執行時使用的記憶體上限,一旦超出就發oom。
● 優先順序分配:通過分配的cpu時間片數量和磁碟io頻寬,實際上就等同於控制了任務執行的優先順序。
● 資源統計:統計系統的資源使用量,比如cpu使用時長、記憶體用量等,多見於類似公有雲的按需收費。
● 任務控制:對任務執行掛起、恢復等操作。
聯合檔案系統,又叫 unionfs,是一種通過建立檔案層程序操作的檔案系統,因此,聯合檔案系統非常輕快。docker 使用聯合檔案系統為容器提供構建層,使得容器可以實現寫時複製以及映象的分層構建和儲存。
docker 支援以下儲存驅動程式:
● overlay2:是當前所有受支援的linux發行版的首選儲存驅動程式,不需要任何額外的配置。
● aufs:是在核心3.13上的ubuntu 14.04上執行的docker 18.06及更早版本的首選儲存驅動程式,而該核心不支援overlay2。
● btrfs/zfs:驅動程式是後備檔案系統(安裝了docker的主機的檔案系統),則使用它們。
談談容器技術
首先呢,上台演講的人均認為容器不是虛擬化,兩者不等價。嗯,是呀。如果等價的話,這應該叫虛擬化技術大會了。演講者均認為這兩者的區別在於 容器是應用的包裹。虛擬化是作業系統的包裹。這就是為什麼我收快遞總是有那麼多層包裹。最後裡面的玻璃杯還是tm的碎了。原因?原因可能是快遞小哥扔了一下。所以需要商家再增加...
Docker容器技術
docker簡介 docker 是乙個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到乙個可移植的映象中,然後發布到任何流行的 linux或windows 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何介面。sudo add apt repository deb ar...
容器技術概述
容器技術 物理資源 部署非常慢,成本非常高,資源浪費,難以遷移和擴充套件,可能會被限定硬體廠商 虛擬機器的優點 資源池 乙個物理機的資源分配到了不同的虛擬機器裡 很容易擴充套件 加物理機器or虛擬機器 很容易雲化 亞馬遜aws 阿里雲等 虛擬機器的侷限性 每乙個虛擬機器都是乙個完整的作業系統,要給其...