中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Docker容器中實現安全與隔離

發布時間:2021-08-05 21:39:03 來源:億速云 閱讀:121 作者:chen 欄目:云計算

本篇內容介紹了“怎么在Docker容器中實現安全與隔離”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

虛擬化和隔離

操作系統級的虛擬化,容器,空間,以及“chroot with steroids”,其實都定義了同一個概念:用戶空間隔離。類似Docker的產品都使用了操作系統級的虛擬化,通過用戶空間隔離可以提供額外的安全性。

0.9版本起,Docker包含了libcontainer庫作為它直接虛擬化的方法,這個功能由Linux內核提供。 此外,它還通過 LXC[1],systemd-nspawn[2],和libvert[3]使用了抽象虛擬接口。
這些虛擬化庫全部利用了Linux的原始容器(參見上圖)

* namespaces
* cgroups
* capabilities等等。

Docker在一個包裝中聯合了以上功能,并稱之為容器格式。

Libcontainer

默認的容器格式被稱為libcontainer。

Docker也支持使用[LXC](https://linuxcontainers.org/的傳統Linux容器。在將來,Docker可能會支持其他的容器格式,比如結合BSD jails或者Solaris Zones。

執行驅動程序是一種特殊容器格式的實現,用來運行docker容器。在最新的版本中,libcontainer有以下特性:

* 是運行docker容器的默認執行驅動程序。
* 和LXC同時裝載。
* 使用沒有任何其他依賴關系的Go語言設計的庫,來直接訪問內核容器的API。
 * 目前的Docker涵蓋的功能有:命名空間使用,cgroups管理,capabilities權限集,進程運行的環境變量配置以及網絡接口防火墻設置——所有功能是固定可預測的,不依賴LXC或者其它任何用戶區軟件包。
 * 只需提供一個根文件系統,和libcontainer對容器的操作配置,它會幫你完成剩下的事情。
 * 支持新建容器或者添加到現有的容器。
 * 事實上,對libcontainer最迫切的需求是穩定,開發團隊也將其設為了默認。
   * 在Docker 0.9中,LXC現在可以選擇關閉。
   * 注意:LXC在將來會繼續被支持。
   * 如果想要重新使用LXC驅動,只需輸入指令`docker -d –e lxc`,然后重啟Docker。

用戶命名空間

Docker不是虛擬化,相反的,它是一個支持命名空間抽象的內核,提供了獨立工作空間(或容器)。當你運行一個容器的時候,Docker為容器新建了一系列的namespace。

一些Docker使用的linux命名空間:

* pid namespace
 * 用作區分進程(PID: Process ID)。
 * 容器中運行的進程就如同在普通的Linux系統運行一樣,盡管它們和其他進程共享一個底層內核。
* net namespace
 * 用作管理網絡接口。
 * [DNAT]允許你單獨配置主機中每個用戶的的網絡,并且有一個方便的接口傳輸它們之間的數據。
  * 當然,你也可以通過使用網橋用物理接口替換它。
* ipc namespace
 * 用作管理對IPC (IPC: InterProcess Communication)資源的訪問。
* mnt namespace
 * 用作管理mount-points (MNT: Mount)。
* uts namespace
 * 用作區分內核和版本標識符(UTS: Unix Timesharing System)。

cgroups

Linux上的Docker使用了被稱為cgroups的技術。因為每個虛擬機都是一個進程,所有普通Linux的資源管理應用可以被應用到虛擬機。此外,資源分配和調度只有一個等級,因為一個容器化的Linux系統只有一個內核并且這個內核對容器完全可見。

總之,cgroups可以讓Docker:

* 實現組進程并且管理它們的資源總消耗。
* 分享可用的硬件資源到容器。
* 限制容器的內存和CPU使用。
 * 可以通過更改相應的cgroup來調整容器的大小。
 * 通過檢查Linux中的/sys/fs/cgroup對照組來獲取容器中的資源使用信息。
* 提供了一種可靠的結束容器內所有進程的方法。

Capabilities

Linux使用的是“POSIX capabilities”。這些權限是所有強大的root權限分割而成的一系列權限。在[Linux manpages]上可以找到所有可用權限的清單。Docker丟棄了除了[所需權限]外的所有權限,使用了白名單而不是黑名單。

一般服務器(裸機或者虛擬機)需要以root權限運行一系列進程。包括:

* SSH
* cron
* syslogd
* 硬件管理工具 (比如負載模塊)
* 網絡配置工具 (比如處理DHCP, WPA, or VPNs)等。

每個容器都是不同的,因為幾乎所有這些任務都由圍繞容器的基礎設施進行處理。默認的,Docker啟用一個嚴格限制權限的容器。大多數案例中,容器不需要真正的root權限。舉個例子,進程(比如說網絡服務)只需要綁定一個小于1024的端口而不需要root權限:他們可以被授予[CAP_NET_BIND_SERVICE](http://man7.or來代替。因此,容器可以被降權運行:意味著容器中的root權限比真正的root權限擁有更少的特權。
Capabilities只是現代Linux內核提供的眾多安全功能中的一個。為了加固一個Docker主機,你可以使用現有知名的系統:

* TOMOYO
* [AppArmor]
* [SELinux]
* GRSEC, etc.

“怎么在Docker容器中實現安全與隔離”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

郁南县| 阿巴嘎旗| 霍邱县| 沙湾县| 崇仁县| 巴林右旗| 普洱| 玉山县| 中宁县| 盐城市| 灵台县| 虹口区| 山东省| 台山市| 万宁市| 新竹县| 松桃| 东乡族自治县| 永清县| 莎车县| 丁青县| 揭阳市| 鄂州市| 饶阳县| 渭南市| 嘉祥县| 长宁区| 临潭县| 泗阳县| 富宁县| 武安市| 黄冈市| 堆龙德庆县| 哈密市| 东阳市| 常宁市| 晋宁县| 曲阳县| 朝阳市| 萍乡市| 新田县|