啟用增強型容器隔離 (Enhanced Container Isolation)
ECI 可防止惡意容器危害 Docker Desktop,同時維持完整的開發者生產力。
本頁面將說明如何開啟增強型容器隔離 (ECI) 並驗證其運作是否正常。
先決條件
開始之前,您必須具備
- Docker 商務版訂閱
- Docker Desktop 4.13 或更高版本
- 強制登入(僅適用於管理組織範圍內設定的管理員)
啟用增強型容器隔離 (Enhanced Container Isolation)
給開發者
在您的 Docker Desktop 設定中開啟 ECI
登入 Docker Desktop 中的組織帳號。您的組織必須擁有 Docker Business 訂閱。
停止並移除所有現有的容器
$ docker stop $(docker ps -q) $ docker rm $(docker ps -aq)在 Docker Desktop 中,前往 **Settings (設定)** > **General (一般)**。
勾選 **Use Enhanced Container Isolation (使用增強型容器隔離)** 核取方塊。
選擇 **Apply and restart (套用並重新啟動)**。
重要ECI 無法保護在啟用該功能之前建立的容器。請在啟用 ECI 之前移除現有容器。
給管理員
使用設定管理 (Settings Management) 在組織範圍內設定增強型容器隔離
- 登入 Docker Home 並選取您的組織。
- 前往 **Admin Console (管理員控制台)** > **Desktop Settings Management (桌面設定管理)**。
- 建立或編輯設定原則.
- 將 **Enhanced Container Isolation (增強型容器隔離)** 設定為 **Always enabled (始終啟用)**。
建立一個
admin-settings.json檔案並加入{ "configurationFileVersion": 2, "enhancedContainerIsolation": { "value": true, "locked": true } }根據需求設定以下內容
"value": true:預設開啟 ECI(必填)"locked": true:禁止開發者關閉 ECI"locked": false:允許開發者控制此設定
套用設定
若要使 ECI 設定生效
- 新安裝:使用者啟動 Docker Desktop 並登入
- 現有安裝:使用者必須完全結束並重新啟動 Docker Desktop
重要僅從 Docker Desktop 選單重新啟動是不夠的。使用者必須完全結束並重新開啟 Docker Desktop。
您也可以為需要 Docker API 存取權限的受信任映像檔設定 Docker Socket 掛載權限。
驗證增強型容器隔離是否已啟動
開啟 ECI 後,請使用以下方法驗證其運作是否正常。
檢查使用者命名空間映射
執行容器並檢查使用者命名空間映射
$ docker run --rm alpine cat /proc/self/uid_map
在開啟 ECI 的狀態下
0 100000 65536這顯示容器的 root 使用者 (0) 被映射到 Docker Desktop VM 中的非特權使用者 (100000),並具有 64K 的使用者 ID 範圍。每個容器都會獲得一個專屬的使用者 ID 範圍以進行隔離。
在關閉 ECI 的狀態下
0 0 4294967295這顯示容器的 root 使用者 (0) 直接映射到 VM 的 root 使用者 (0),提供的隔離性較低。
檢查容器執行階段 (Container Runtime)
驗證所使用的容器執行階段
$ docker inspect --format='{{.HostConfig.Runtime}}' <container_name>
開啟 ECI 時,它會變成 sysbox-runc。關閉 ECI 時,它會返回 runc。
測試安全性限制
驗證 ECI 安全性限制是否已啟動。
測試命名空間共用
$ docker run -it --rm --pid=host alpine
在開啟 ECI 的狀態下,此指令會失敗,並顯示關於 Sysbox 容器無法與主機共用命名空間的錯誤訊息。
測試 Docker Socket 存取
$ docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock alpine
在開啟 ECI 的狀態下,此指令會失敗,除非您已為受信任的映像檔設定了 Docker Socket 例外。
使用者在強制執行 ECI 後會看到的內容
當管理員透過設定管理強制執行增強型容器隔離時
- **Use Enhanced Container Isolation (使用增強型容器隔離)** 設定在 Docker Desktop 設定中會顯示為已開啟。
- 如果設為
"locked": true,該設定將被鎖定並呈現灰色,無法更改。 - 所有新容器都會自動使用 Linux 使用者命名空間。
- 現有的開發流程將繼續正常運作,無需修改。
- 使用者在
docker inspect的輸出中會看到sysbox-runc作為容器執行階段。