容器安全性常見問題
在 Docker Desktop 中,容器如何與主機隔離?
Docker Desktop 在自訂/最小化的 Linux 虛擬機器內執行所有容器(原生 Windows 容器除外)。這在容器和主機之間增加了一層強大的隔離,即使容器以 root 身份執行。
但請注意以下事項
容器可以存取透過設定 -> 資源 -> 檔案分享設定的檔案分享主機檔案(請參閱下面的下一個常見問題以了解更多資訊)。
預設情況下,容器以 root 身份執行,但在 Docker Desktop 虛擬機器內的功能有限。使用提升的權限執行的容器(例如,`--privileged`、`--pid=host`、`--cap-add` 等)在 Docker Desktop 虛擬機器內以提升的權限以 root 身份執行,這使它們可以存取 Docker Desktop 虛擬機器內部,包括 Docker 引擎。因此,使用者必須小心他們使用此類權限執行的容器,以避免惡意容器映像檔造成安全性漏洞。
如果啟用了增強的容器隔離 (ECI) 模式,則每個容器都在 Docker Desktop 虛擬機器內的專用 Linux 使用者命名空間中執行,這表示容器在 Docker Desktop 虛擬機器中沒有任何權限。即使使用 `--privileged` 旗標或類似旗標,容器處理程序也只會在其容器的邏輯邊界內具有權限,否則則沒有權限。此外,ECI 使用其他進階技術來保護使用者,確保他們不容易入侵 Docker Desktop 虛擬機器和 Docker 引擎內部(請參閱 ECI 章節以了解更多資訊)。不需要變更容器或使用者工作流程,因為額外的保護措施已在幕後新增。
容器可以讀取和寫入主機檔案系統的哪些部分?
只有在透過設定 -> 資源 -> 檔案分享共用這些檔案,並且只有在將這些檔案繫結掛載到容器中時(例如,`docker run -v /path/to/host/file:/mnt ...`),容器才能存取主機檔案。
以 root 身份執行的容器可以存取主機上管理員擁有的檔案或目錄嗎?
否;主機檔案分享(從主機檔案系統繫結掛載)使用使用者空間製作的檔案伺服器(在 `com.docker.backend` 中以執行 Docker Desktop 的使用者身份執行),因此容器無法獲得主機上使用者尚未擁有的任何存取權限。