它是如何工作的?
Docker 透過使用 Sysbox 容器執行時 來實現增強型容器隔離。Sysbox 是標準 OCI runc 執行時的分支,經過修改以增強標準容器隔離和工作負載。有關更多詳細資訊,請參閱 幕後。
從 4.13 版開始,Docker Desktop 包括 Sysbox 的自定義版本。
當 啟用增強型容器隔離 時,使用者透過 docker run
或 docker create
建立的容器將自動使用 Sysbox 啟動,而不是使用標準的 OCI runc 執行時。使用者無需執行任何其他操作,可以像往常一樣繼續使用容器。有關例外情況,請參閱 常見問題解答。
即使是使用不安全的 --privileged
標誌的容器現在也可以使用增強型容器隔離安全執行,因此它們無法再用於突破 Docker Desktop 虛擬機器 (VM) 或其他容器。
注意
在 Docker Desktop 中啟用增強型容器隔離時,將忽略 Docker CLI 的“--runtime”標誌。Docker 的預設執行時仍為“runc”,但所有使用者容器都將隱式使用 Sysbox 啟動。
增強型容器隔離與 Docker Engine 的 userns-remap 模式或無根 Docker 不同。這將在下面進一步解釋。
幕後
Sysbox 透過使用以下技術增強容器隔離
- 在所有容器上啟用 Linux 使用者名稱空間(容器中的 root 使用者對映到 Linux VM 中的非特權使用者)。
- 限制容器掛載敏感的 VM 目錄。
- 驗證容器和 Linux 核心之間的敏感系統呼叫。
- 在容器的使用者名稱空間和 Linux VM 之間對映檔案系統使用者/組 ID。
- 在容器內模擬 procfs 和 sysfs 檔案系統的一部分。
其中一些是透過 Docker Desktop 現在已合併的 Linux 核心的最新進展實現的。Sysbox 應用這些技術,對容器的功能或效能影響最小。
這些技術補充了 Docker 的傳統容器安全機制,例如使用其他 Linux 名稱空間、cgroups、受限制的 Linux 功能、seccomp 和 AppArmor。它們在 Docker Desktop VM 中的容器和 Linux 核心之間添加了一層強大的隔離層。
有關更多資訊,請參閱 主要功能和優勢。
增強型容器隔離與 Docker Userns-Remap 模式
Docker Engine 包含一項名為 userns-remap 模式 的功能,該功能可在所有容器中啟用使用者名稱空間。但是它有一些 侷限性,並且在 Docker Desktop 中不受支援。
Userns-remap 模式與增強型容器隔離類似,因為兩者都透過利用 Linux 使用者名稱空間來提高容器隔離。
但是,增強型容器隔離更加先進,因為它會自動為每個容器分配專用的使用者名稱空間對映,並新增其他幾個 容器隔離功能 ,旨在保護具有嚴格安全要求的組織中的 Docker Desktop。
增強型容器隔離與無根 Docker
無根 Docker 允許 Docker Engine 以及擴充套件的容器在 Linux 主機上原生執行,而無需 root 許可權。這允許非 root 使用者在 Linux 上原生安裝和執行 Docker。
無根 Docker 在 Docker Desktop 中不受支援。雖然它在 Linux 上原生執行 Docker 時是一項有價值的功能,但在 Docker Desktop 中,它的價值降低了,因為 Docker Desktop 在 Linux VM 中執行 Docker Engine。也就是說,Docker Desktop 已經允許非 root 主機使用者執行 Docker,並使用虛擬機器將 Docker Engine 與主機隔離開來。
與無根 Docker 不同,增強型容器隔離不會在 Linux 使用者名稱空間中執行 Docker Engine。相反,它在使用者名稱空間中執行該引擎生成的容器。這樣做的優點是可以繞過 無根 Docker 的侷限性,並在容器和 Docker Engine 之間建立更強的邊界。
增強型容器隔離旨在確保使用 Docker Desktop 啟動的容器無法輕鬆突破 Docker Desktop Linux VM,因此無法修改其中的安全設定。