配置設定管理

注意

設定管理僅適用於 Docker Business 客戶。

此頁面包含有關管理員如何配置設定管理以指定和鎖定配置引數以在整個組織中建立標準化的 Docker Desktop 環境的資訊。

設定管理專門為不向開發人員提供其機器的根訪問許可權的組織而設計。

先決條件

步驟一:建立 admin-settings.json 檔案並將其儲存到正確的位置

您可以在 macOSWindows 上使用 --admin-settings 安裝程式標誌自動建立 admin-settings.json 並將其儲存到正確的位置,或者手動進行設定。

要手動進行設定

  1. 建立一個新的空 JSON 檔案並將其命名為 admin-settings.json

  2. admin-settings.json 檔案儲存在開發人員機器上的以下位置

    • Mac:/Library/Application\ Support/com.docker.docker/admin-settings.json
    • Windows:C:\ProgramData\DockerDesktop\admin-settings.json
    • Linux:/usr/share/docker-desktop/admin-settings.json

    透過將此檔案放置在上述受保護的目錄中,終端使用者將無法對其進行修改。

    重要

    假設您可以透過諸如 Jamf 等裝置管理軟體將 admin-settings.json 設定檔案推送到上述指定位置。

步驟二:配置您要鎖定的設定

注意

某些配置引數僅適用於 Windows。下表中突出顯示了這一點。

admin-settings.json 檔案需要巢狀的配置引數列表,每個引數都必須包含 locked 引數。您可以根據需要新增或刪除配置引數。

如果 locked: true,使用者將無法從 Docker Desktop 或 CLI 編輯此設定。

如果 locked: false,則類似於在工廠預設值中設定,即

  • 對於新安裝,locked: false 會在 Docker Desktop UI 中預填充相關設定,但使用者可以對其進行修改。

  • 如果 Docker Desktop 已經安裝並正在使用,則會忽略 locked: false。這是因為 Docker Desktop 的現有使用者可能已經更新了某個設定,該設定反過來又會寫入相關的配置檔案,例如 settings.jsondaemon.json。在這種情況下,會尊重使用者的首選項,我們不會更改這些值。管理員可以透過將 locked: true 設定為 true 來控制這些內容。

以下 admin-settings.json 程式碼和表格提供了所需語法以及引數和值的描述示例

{
  "configurationFileVersion": 2,
  "exposeDockerAPIOnTCP2375": {
    "locked": true,
    "value": false
  },
  "proxy": {
    "locked": true,
    "mode": "system",
    "http": "",
    "https": "",
    "exclude": [],
    "windowsDockerdPort": 65000,
    "enableKerberosNtlm": false
  },
  "containersProxy": {
    "locked": true,
    "mode": "manual",
    "http": "",
    "https": "",
    "exclude": [],
    "pac":"",
    "transparentPorts": ""
  },
  "enhancedContainerIsolation": {
    "locked": true,
    "value": true,
    "dockerSocketMount": {
      "imageList": {
        "images": [
          "docker.io/localstack/localstack:*",
          "docker.io/testcontainers/ryuk:*"
        ]
      },
      "commandList": {
        "type": "deny",
        "commands": ["push"]
      }
    }
  },
  "linuxVM": {
    "wslEngineEnabled": {
      "locked": false,
      "value": false
    },
    "dockerDaemonOptions": {
      "locked": false,
      "value":"{\"debug\": false}"
    },
    "vpnkitCIDR": {
      "locked": false,
      "value":"192.168.65.0/24"
    }
  },
  "kubernetes": {
     "locked": false,
     "enabled": false,
     "showSystemContainers": false,
     "imagesRepository": ""
  },
  "windowsContainers": {
    "dockerDaemonOptions": {
      "locked": false,
      "value":"{\"debug\": false}"
    }
  },
  "disableUpdate": {
    "locked": false,
    "value": false
  },
  "analyticsEnabled": {
    "locked": false,
    "value": true
  },
  "extensionsEnabled": {
    "locked": true,
    "value": false
  },
  "scout": {
    "locked": false,
    "sbomIndexing": true,
    "useBackgroundIndexing": true
  },
  "allowExperimentalFeatures": {
    "locked": false,
    "value": false
  },
  "allowBetaFeatures": {
    "locked": false,
    "value": false
  },
  "blockDockerLoad": {
    "locked": false,
    "value": true
  },
  "filesharingAllowedDirectories": [
    {
      "path": "$HOME",
      "sharedByDefault": true
    },
    {
      "path":"$TMP",
      "sharedByDefault": false
    }
  ],
  "useVirtualizationFrameworkVirtioFS": {
    "locked": true,
    "value": true
  },
  "useVirtualizationFrameworkRosetta": {
    "locked": true,
    "value": true
  },
  "useGrpcfuse": {
    "locked": true,
    "value": true
  },
  "displayedOnboarding": {
    "locked": true,
    "value": true
  }
}
引數描述
configurationFileVersion指定配置檔案格式的版本。
exposeDockerAPIOnTCP2375僅限 Windows在指定埠上公開 Docker API。如果將 value 設定為 true,則 Docker API 將在埠 2375 上公開。注意:這是未經身份驗證的,僅應在受適當防火牆規則保護的情況下啟用。
proxy如果將 mode 設定為 system 而不是 manual,Docker Desktop 將從系統獲取代理值,並忽略為 httphttpsexclude 設定的任何值。將 mode 更改為 manual 以手動配置代理伺服器。如果代理埠是自定義的,請在 httphttps 屬性中指定它,例如 "https": "http://myotherproxy.com:4321"exclude 屬性指定要繞過代理的以逗號分隔的主機和域列表。
       windowsDockerdPort僅限 Windows在該埠上公開 Docker Desktop 的內部代理,以便 Windows Docker 守護程式在本地連線到該代理。如果將其設定為 0,則會選擇一個隨機的空閒埠。如果該值大於 0,則使用該確切值作為埠。預設值為 -1,它會停用該選項。注意:這僅適用於 Windows 容器。
       enableKerberosNtlm當設定為 true 時,將啟用 Kerberos 和 NTLM 身份驗證。預設值為 false。在 Docker Desktop 4.32 及更高版本中可用。有關更多資訊,請參閱設定文件。
containersProxy(Beta 版)允許您建立隔離的容器。有關更多資訊,請參閱 隔離容器
enhancedContainerIsolation如果將 value 設定為 true,Docker Desktop 將透過 Linux 使用者名稱空間以非特權方式執行所有容器,防止它們修改 Docker Desktop VM 中的敏感配置,並使用其他高階技術來隔離它們。有關更多資訊,請參閱 增強容器隔離
       dockerSocketMount預設情況下,增強容器隔離會阻止將 Docker Engine 套接字繫結到容器中(例如,docker run -v /var/run/docker.sock:/var/run/docker.sock ...)。這使管理員能夠以受控的方式放鬆此限制。有關更多資訊,請參閱 ECI 配置
              imageList指示允許哪些容器映象繫結到 Docker Engine 套接字。
              commandList限制容器可以透過繫結到 Docker Engine 套接字發出的命令。
linuxVM與 Linux VM 選項相關的引數和設定 - 為方便起見,它們在此處分組在一起。
       wslEngineEnabled僅限 Windows如果將 value 設定為 true,Docker Desktop 將使用基於 WSL 2 的引擎。這將覆蓋在安裝過程中使用 --backend=<backend name> 標誌設定的任何內容。
      dockerDaemonOptions如果將 value 設定為 true,則它將覆蓋 Docker Engine 配置檔案中的選項。請參閱 Docker Engine 參考。請注意,為了增強安全性,啟用增強容器隔離時,可能會覆蓋某些配置屬性。
      vpnkitCIDR覆蓋用於 *.docker.internal 的 vpnkit DHCP/DNS 的網路範圍
kubernetes如果將 enabled 設定為 true,則在 Docker Desktop 啟動時,將啟動一個 Kubernetes 單節點叢集。如果將 showSystemContainers 設定為 true,則 Kubernetes 容器將顯示在 UI 中,以及在您執行 docker ps 時。imagesRepository 允許您指定 Docker Desktop 從中拉取 Kubernetes 映象的程式碼庫。例如,"imagesRepository": "registry-1.docker.io/docker"
windowsContainerswindowsContainers 選項相關的引數和設定 - 為方便起見,它們在此處分組在一起。
       dockerDaemonOptions覆蓋 Linux 守護程式配置檔案中的選項。請參閱 Docker Engine 參考
disableUpdate如果將 value 設定為 true,則會停用檢查 Docker Desktop 更新和有關更新的通知。
analyticsEnabled如果將 value 設定為 false,Docker Desktop 不會向 Docker 傳送使用情況統計資訊。
extensionsEnabled如果將 value 設定為 false,則會停用 Docker 擴充套件。
scoutuseBackgroundIndexing設定為false將停用對載入到影像儲存的影像的自動索引。將sbomIndexing設定為false將阻止使用者透過在 Docker Desktop 中檢查影像或使用docker scout CLI 命令來索引影像。
allowExperimentalFeatures如果value設定為false,則停用實驗性功能。
allowBetaFeatures如果value設定為false,則停用測試版功能。
blockDockerLoad如果value設定為true,使用者將不再能夠執行docker load,如果嘗試執行,將收到錯誤訊息。
filesharingAllowedDirectories指定您的開發人員可以新增檔案共享的路徑。還可以接受$HOME$TMP$TEMP作為path變數。新增路徑後,其子目錄也將被允許。如果sharedByDefault設定為true,則該路徑將在出廠重置或 Docker Desktop 首次啟動時新增。
useVirtualizationFrameworkVirtioFS僅限 macOS如果value設定為true,則 VirtioFS 將被設定為檔案共享機制。注意:如果useVirtualizationFrameworkVirtioFSuseGrpcfusevalue都設定為true,則 VirtioFS 優先。同樣,如果useVirtualizationFrameworkVirtioFSuseGrpcfusevalue都設定為false,則 osxfs 將被設定為檔案共享機制。
useVirtualizationFrameworkRosetta僅限 macOS如果value設定為true,Docker Desktop 將開啟 Rosetta 以加速 Apple Silicon 上的 x86_64/amd64 二進位制模擬。注意:這也會自動啟用“使用虛擬化框架”。
useGrpcfuse僅限 macOS如果value設定為true,則 gRPC Fuse 將被設定為檔案共享機制。
displayedOnboarding如果value設定為true,則不會向新使用者顯示 onboarding 調查。將value設定為false無效。

步驟三:重新啟動 Docker Desktop

注意

管理員應在本地測試透過admin-settings.json檔案所做的更改,以檢視設定是否按預期工作。

要使設定生效

  • 在新安裝中,開發人員需要啟動 Docker Desktop 並對其組織進行身份驗證。
  • 在現有安裝中,開發人員需要透過 Docker 選單退出 Docker Desktop,然後重新啟動 Docker Desktop。如果他們已登入,則無需再次登入即可使更改生效。

    重要

    從 Docker 選單中選擇“重啟”是不夠的,因為它只會重啟 Docker Desktop 的某些元件。

Docker 不會自動強制開發人員在更改後重新啟動並登入,以免擾亂開發人員的工作流程。

在 Docker Desktop 中,開發人員會看到相關的設定變灰,並顯示訊息“被您的管理員鎖定”。

Proxy settings grayed out with Settings Management