啟用增強容器隔離
ECI 可防止惡意容器危及 Docker Desktop,同時保持開發者生產力。
本頁向您展示如何啟用增強容器隔離 (ECI) 並驗證其是否正常工作。
先決條件
在開始之前,您必須擁有
- Docker Business 訂閱
- Docker Desktop 4.13 或更高版本
- 強制登入(僅限管理組織範圍設定的管理員)
啟用增強容器隔離
對於開發者
在 Docker Desktop 設定中啟用 ECI
登入到 Docker Desktop 中的組織。您的組織必須擁有 Docker Business 訂閱。
停止並移除所有現有容器
$ docker stop $(docker ps -q) $ docker rm $(docker ps -aq)
在 Docker Desktop 中,轉到設定 > 通用。
選擇使用增強容器隔離複選框。
選擇應用並重啟。
重要ECI 不保護在啟用該功能之前建立的容器。在啟用 ECI 之前請移除現有容器。
對於管理員
使用設定管理在組織範圍內配置增強容器隔離
- 登入 Docker Home 並選擇您的組織。
- 轉到管理控制檯 > 桌面設定管理。
- 建立或編輯設定策略.
- 將增強容器隔離設定為始終啟用。
建立
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 套接字掛載許可權。
驗證增強容器隔離是否已啟用
啟用 ECI 後,使用這些方法驗證其是否正常工作。
檢查使用者名稱空間對映
執行容器並檢查使用者名稱空間對映
$ docker run --rm alpine cat /proc/self/uid_map
啟用 ECI 後
0 100000 65536
這表示容器的根使用者 (0) 對映到 Docker Desktop VM 中的非特權使用者 (100000),擁有 64K 個使用者 ID 範圍。每個容器都會獲得一個獨佔的使用者 ID 範圍以實現隔離。
關閉 ECI 後
0 0 4294967295
這表示容器根使用者 (0) 直接對映到 VM 根使用者 (0),提供的隔離性較低。
檢查容器執行時
驗證正在使用的容器執行時
$ docker inspect --format='{{.HostConfig.Runtime}}' <container_name>
啟用 ECI 後,它會返回 sysbox-runc
。關閉 ECI 後,它會返回 runc
。
測試安全限制
驗證 ECI 安全限制是否處於活動狀態。
測試名稱空間共享
$ docker run -it --rm --pid=host alpine
啟用 ECI 後,此命令將因 Sysbox 容器無法與主機共享名稱空間而失敗。
測試 Docker 套接字訪問
$ docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock alpine
啟用 ECI 後,此命令將失敗,除非您為受信任的映象配置了 Docker 套接字例外。
強制執行 ECI 後用戶所看到的內容
當管理員透過設定管理強制執行增強容器隔離時
- Docker Desktop 設定中會顯示“使用增強容器隔離”設定已啟用。
- 如果設定為
"locked": true
,則該設定將被鎖定並灰顯。 - 所有新容器將自動使用 Linux 使用者名稱空間。
- 現有開發工作流程無需修改即可繼續工作。
- 使用者在
docker inspect
輸出中會看到sysbox-runc
作為容器執行時。