啟用增強型容器隔離 (Enhanced Container Isolation)

訂閱: 商務版
適用對象: 管理員

ECI 可防止惡意容器危害 Docker Desktop,同時維持完整的開發者生產力。

本頁面將說明如何開啟增強型容器隔離 (ECI) 並驗證其運作是否正常。

先決條件

開始之前,您必須具備

  • Docker 商務版訂閱
  • Docker Desktop 4.13 或更高版本
  • 強制登入(僅適用於管理組織範圍內設定的管理員)

啟用增強型容器隔離 (Enhanced Container Isolation)

給開發者

在您的 Docker Desktop 設定中開啟 ECI

  1. 登入 Docker Desktop 中的組織帳號。您的組織必須擁有 Docker Business 訂閱。

  2. 停止並移除所有現有的容器

    $ docker stop $(docker ps -q)
    $ docker rm $(docker ps -aq)
    
  3. 在 Docker Desktop 中,前往 **Settings (設定)** > **General (一般)**。

  4. 勾選 **Use Enhanced Container Isolation (使用增強型容器隔離)** 核取方塊。

  5. 選擇 **Apply and restart (套用並重新啟動)**。

重要

ECI 無法保護在啟用該功能之前建立的容器。請在啟用 ECI 之前移除現有容器。

給管理員

使用設定管理 (Settings Management) 在組織範圍內設定增強型容器隔離

  1. 登入 Docker Home 並選取您的組織。
  2. 前往 **Admin Console (管理員控制台)** > **Desktop Settings Management (桌面設定管理)**。
  3. 建立或編輯設定原則.
  4. 將 **Enhanced Container Isolation (增強型容器隔離)** 設定為 **Always enabled (始終啟用)**。
  1. 建立一個 admin-settings.json 檔案並加入

    {
      "configurationFileVersion": 2,
      "enhancedContainerIsolation": {
        "value": true,
        "locked": true
      }
    }
  2. 根據需求設定以下內容

    • "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 作為容器執行階段。

下一步

© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.