使用 JSON 檔案配置設定管理

訂閱: 商業版
適用於: 管理員

設定管理允許您使用 admin-settings.json 檔案在整個組織中配置和強制執行 Docker Desktop 設定。這可以標準化 Docker Desktop 環境並確保所有使用者都具有一致的配置。

先決條件

在開始之前,請確保您已具備:

Docker Desktop 僅在身份驗證和 Docker 商業版許可證檢查都成功後,才應用 admin-settings.json 檔案中的設定。

重要

使用者必須已登入並屬於 Docker 商業組織。如果任何一個條件不滿足,則忽略設定檔案。

第一步:建立設定檔案

您可以透過兩種方式建立 admin-settings.json 檔案:

  • 使用 --admin-settings 安裝程式標誌自動生成檔案
  • 手動建立並放置在以下位置:
    • 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
重要

將檔案放置在受保護的目錄中,以防止未經授權的更改。使用移動裝置管理 (MDM) 工具(如 Jamf)在您的組織中大規模分發檔案。

第二步:配置設定

提示

有關可用設定、其支援的平臺以及其適用的配置方法的完整列表,請參閱設定參考

admin-settings.json 檔案使用結構化鍵來定義可配置的設定以及是否強制執行這些值。

每個設定都支援一個控制使用者許可權的 locked 欄位:

  • locked 設定為 true 時,使用者無法在 Docker Desktop、CLI 或配置檔案中更改該值。
  • locked 設定為 false 時,該值作為預設建議,使用者仍然可以更新它。

如果使用者已經在 settings-store.jsonsettings.jsondaemon.json 中自定義了某個值,則現有安裝會忽略 locked 設定為 false 的設定。

分組設定

Docker Desktop 將一些設定與一個控制整個部分的開關分組在一起。這些包括:

  • 增強容器隔離 (ECI):使用一個主開關 (enhancedContainerIsolation) 來啟用/停用整個功能,並帶有用於特定配置的子設定
  • Kubernetes:使用一個主開關 (kubernetes.enabled) 和用於叢集配置的子設定
  • Docker Scout:將設定分組在 scout 物件下

配置分組設定時:

  1. 設定主開關以啟用該功能
  2. 在該組中配置子設定
  3. 當您鎖定主開關時,使用者無法修改該組中的任何設定

enhancedContainerIsolation 示例

"enhancedContainerIsolation": {
  "locked": true,  // This locks the entire ECI section
  "value": true,   // This enables ECI
  "dockerSocketMount": {  // These are sub-settings
    "imageList": {
      "images": ["docker.io/testcontainers/ryuk:*"]
    }
  }
}

admin-settings.json 檔案示例

以下示例是一個配置了常見企業設定的 admin-settings.json 檔案。您可以將此示例作為模板與 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
  },
  "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
  },
  "desktopTerminalEnabled": {
    "locked": false,
    "value": false
  }
}

第三步:應用設定

設定在 Docker Desktop 重啟且使用者登入後生效。

對於新安裝:

  1. 啟動 Docker Desktop。
  2. 使用您的 Docker 帳戶登入。

對於現有安裝:

  1. 完全退出 Docker Desktop。
  2. 重新啟動 Docker Desktop。
重要

您必須完全退出並重新開啟 Docker Desktop。從選單中重新啟動是不夠的。

admin-settings.json 配置

下表描述了 admin-settings.json 檔案中所有可用設定。

注意

某些設定是特定於平臺的或需要最低的 Docker Desktop 版本。請檢查“版本”列以瞭解要求。

通用設定

引數作業系統描述版本
configurationFileVersion指定配置檔案格式的版本。
analyticsEnabled如果 value 設定為 false,Docker Desktop 不會向 Docker 傳送使用統計資訊。
disableUpdate如果 value 設定為 true,則停用檢查 Docker Desktop 更新和相關通知。
extensionsEnabled如果 value 設定為 false,則停用 Docker 擴充套件。
blockDockerLoad如果 value 設定為 true,則使用者將無法執行 docker load,如果嘗試執行,將收到錯誤。
displayedOnboarding如果 value 設定為 true,則不會向新使用者顯示新手引導調查。將 value 設定為 false 無效。Docker Desktop 4.30 及更高版本
desktopTerminalEnabled如果 value 設定為 false,開發人員無法使用 Docker 終端與主機互動並直接從 Docker Desktop 執行命令。
exposeDockerAPIOnTCP2375僅限 Windows在指定埠上公開 Docker API。如果 value 設定為 true,則 Docker API 在埠 2375 上公開。注意:此為未經身份驗證的,僅在受適當防火牆規則保護時才應啟用。

檔案共享和模擬

引數作業系統描述版本
filesharingAllowedDirectories指定開發人員可以新增檔案共享的路徑。還接受 $HOME$TMP$TEMP 作為 path 變數。新增路徑後,其子目錄也受允許。如果 sharedByDefault 設定為 true,則該路徑將在恢復出廠設定或 Docker Desktop 首次啟動時新增。
useVirtualizationFrameworkVirtioFS僅限 macOS如果 value 設定為 true,則 VirtioFS 被設定為檔案共享機制。注意:如果 useVirtualizationFrameworkVirtioFSuseGrpcfuse 都將 value 設定為 true,則 VirtioFS 優先。同樣,如果 useVirtualizationFrameworkVirtioFSuseGrpcfuse 都將 value 設定為 false,則 osxfs 被設定為檔案共享機制。
useGrpcfuse僅限 macOS如果 value 設定為 true,則 gRPC Fuse 被設定為檔案共享機制。
useVirtualizationFrameworkRosetta僅限 macOS如果 value 設定為 true,Docker Desktop 會開啟 Rosetta 以加速 Apple Silicon 上 x86_64/amd64 二進位制模擬。注意:這也會自動啟用 Use Virtualization frameworkDocker Desktop 4.29 及更高版本。

Docker Scout

引數作業系統描述版本
scoutuseBackgroundIndexing 設定為 false 會停用對載入到映象儲存的映象的自動索引。將 sbomIndexing 設定為 false 會阻止使用者透過在 Docker Desktop 中檢查映象或使用 docker scout CLI 命令來索引映象。

代理設定

引數作業系統描述版本
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,停用該選項。
       enableKerberosNtlm當設定為 true 時,啟用 Kerberos 和 NTLM 身份驗證。預設值為 false。有關詳細資訊,請參閱設定文件。Docker Desktop 4.32 及更高版本。

容器代理

引數作業系統描述版本
containersProxy建立氣隙容器。有關詳細資訊,請參閱氣隙容器Docker Desktop 4.29 及更高版本。

Linux 虛擬機器設定

引數作業系統描述版本
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 的網路範圍

Windows 容器

引數作業系統描述版本
windowsContainerswindowsContainers 選項相關的引數和設定 - 為方便起見在此處分組。
       dockerDaemonOptions覆蓋 Linux 守護程式配置檔案中的選項。請參閱 Docker Engine 參考
注意

此設定無法透過 Docker Admin Console 配置。

Kubernetes 設定

引數作業系統描述版本
kubernetes如果 enabled 設定為 true,則在 Docker Desktop 啟動時會啟動一個 Kubernetes 單節點叢集。如果 showSystemContainers 設定為 true,則 Kubernetes 容器會顯示在 Docker Desktop Dashboard 中以及執行 docker ps 時。imagesRepository 設定允許您指定 Docker Desktop 從哪個儲存庫拉取控制平面 Kubernetes 映象。
注意

imagesRepository 與增強容器隔離 (ECI) 結合使用時,將這些映象新增到 ECI Docker 套接字掛載映象列表

[imagesRepository]/desktop-cloud-provider-kind: [imagesRepository]/desktop-containerd-registry-mirror:

這些容器掛載 Docker 套接字,因此您必須將它們新增到 ECI 映象列表中。否則,ECI 會阻止掛載,Kubernetes 將無法啟動。

網路設定

引數作業系統描述版本
defaultNetworkingMode僅限 Windows 和 Mac定義新 Docker 網路的預設 IP 協議:dual-stack (IPv4 + IPv6,預設)、ipv4onlyipv6onlyDocker Desktop 4.43 及更高版本。
dnsInhibition僅限 Windows 和 Mac控制返回給容器的 DNS 記錄過濾。選項:auto(推薦)、ipv4ipv6noneDocker Desktop 4.43 及更高版本。

有關詳細資訊,請參閱網路

AI 設定

引數作業系統描述版本
enableInference如果 allowBetaFeatures 為 true,將 enableInference 設定為 true 會預設啟用 Docker 模型執行器。您可以獨立於 allowBetaFeatures 設定控制此設定。
        enableInferenceTCP啟用主機端 TCP 支援。此設定要求首先啟用 Docker 模型執行器設定。
        enableInferenceTCPPort指定暴露的 TCP 埠。此設定要求首先啟用 Docker 模型執行器設定。
        enableInferenceCORS指定允許的 CORS 來源。空字串表示拒絕所有,* 表示接受所有,或逗號分隔的值列表。此設定要求首先啟用 Docker 模型執行器設定。

Beta 版功能

重要

對於 Docker Desktop 4.41 及更早版本,其中一些設定位於“開發中的功能”頁面的“實驗功能”選項卡下。

引數作業系統描述版本
allowBetaFeatures如果 value 設定為 true,則啟用 Beta 功能。
enableDockerAI如果 allowBetaFeatures 為 true,將 enableDockerAI 設定為 true 會預設啟用 Docker AI (Ask Gordon)。您可以獨立於 allowBetaFeatures 設定控制此設定。
enableDockerMCPToolkit如果 allowBetaFeatures 為 true,將 enableDockerMCPToolkit 設定為 true 會預設啟用 MCP 工具包功能。您可以獨立於 allowBetaFeatures 設定控制此設定。
allowExperimentalFeatures如果 value 設定為 true,則啟用實驗功能。Docker Desktop 4.41 及更早版本

增強型容器隔離

引數作業系統描述版本
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 套接字可以發出的命令。