使用 JSON 檔案設定設定管理

注意

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

此頁面包含有關如何使用 admin-settings.json 檔案設定設定管理的資訊。您可以指定和鎖定設定參數,以便在公司或組織中建立標準化的 Docker Desktop 環境。

設定管理專為未授予開發人員機器根目錄存取權限的組織所設計。

先決條件

您首先需要強制登入,以確保所有 Docker Desktop 開發人員都使用您的組織進行驗證。由於設定管理需要 Docker Business 訂閱,強制登入可確保只有經過驗證的使用者才能存取,並且該功能可在所有使用者之間持續生效,即使沒有強制登入也可能仍然有效。

步驟一:建立 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 設定檔推送至指定位置。

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

注意

某些設定參數僅適用於特定平台或特定 Docker Desktop 版本。下表中會特別標示出來。

admin-settings.json 檔案需要巢狀的設定參數清單,每個參數都必須包含 locked 參數。您可以根據需求新增或移除設定參數。

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

如果 locked: false,則類似於設定出廠預設值,因為

  • 對於新的安裝,locked: false 會預先填入 Docker Desktop 儀表板中的相關設定,但使用者可以修改它。

  • 如果已安裝並正在使用 Docker Desktop,則會忽略 locked: false。這是因為 Docker Desktop 的現有使用者可能已經更新了設定,而該設定會寫入相關的設定檔,例如 settings-store.json(或 Docker Desktop 4.34 及更早版本的 settings.json)或 daemon.json。在這些情況下,會尊重使用者的偏好設定,並且不會更改這些值。這些可以透過設定 locked: 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
  },
  "desktopTerminalEnabled": {
    "locked": false,
    "value": false
  }
}

一般

參數作業系統說明版本
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 將會被設定為檔案分享機制。注意:如果 useVirtualizationFrameworkVirtioFSuseGrpcfusevalue 都設定為 true,VirtioFS 將會優先使用。同樣地,如果 useVirtualizationFrameworkVirtioFSuseGrpcfusevalue 都設定為 false,osxfs 將會被設定為檔案分享機制。
useGrpcfuse僅限 macOS如果將 value 設定為 true,gRPC Fuse 將會被設定為檔案分享機制。
useVirtualizationFrameworkRosetta僅限 macOS如果將 value 設定為 true,Docker Desktop 將會開啟 Rosetta 以加速 Apple Silicon 上的 x86_64/amd64 二進位程式碼模擬。注意:這也會自動啟用「使用虛擬化架構」。Docker Desktop 4.29 版及更高版本。

Docker Scout

參數作業系統說明版本
scoutuseBackgroundIndexing 設定為 false 將會停用載入到映像檔儲存庫的映像檔自動索引功能。將 sbomIndexing 設定為 false 將會阻止使用者透過在 Docker Desktop 中檢查映像檔或使用 docker scout CLI 指令來索引映像檔。

Proxy

參數作業系統說明版本
proxy如果將 mode 設定為 system 而不是 manual,Docker Desktop 將會從系統取得代理伺服器值,並忽略為 httphttpsexclude 設定的任何值。將 mode 變更為 manual 即可手動設定代理伺服器。如果代理伺服器連接埠是自訂的,請在 httphttps 屬性中指定,例如 "https": "http://myotherproxy.com:4321"exclude 屬性指定以逗號分隔的主機和網域名稱清單,以略過代理伺服器。
       windowsDockerdPort僅限 Windows將 Docker Desktop 的內部代理伺服器在本機連接埠上公開,供 Windows Docker Daemon 連線。如果設定為 0,則會選擇一個隨機的可用連接埠。如果值大於 0,則會使用該確切值作為連接埠。預設值為 -1,表示停用此選項。
       enableKerberosNtlm設定為 true 時,將會啟用 Kerberos 和 NTLM 驗證。預設值為 false。如需詳細資訊,請參閱設定文件。Docker Desktop 4.32 版及更高版本。

容器 Proxy

參數作業系統說明版本
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覆蓋 vpnkit DHCP/DNS 用於 *.docker.internal 的網路範圍。

Windows 容器

參數作業系統說明版本
windowsContainerswindowsContainers 選項相關的參數和設定 - 為了方便起見,將它們集中在此處。
       dockerDaemonOptions覆蓋 Linux Daemon 設定檔中的選項。請參閱 Docker Engine 參考

注意

此設定無法透過 Docker Admin Console 進行設定。

Kubernetes

參數作業系統說明版本
kubernetes如果將 enabled 設定為 true,Docker Desktop 啟動時將會啟動 Kubernetes 單節點叢集。如果將 showSystemContainers 設定為 true,Kubernetes 容器將會顯示在 Docker Desktop 儀表板中,以及執行 docker ps 時。imagesRepository 可讓您指定 Docker Desktop 從哪個儲存庫提取 Kubernetes 映像檔。例如,"imagesRepository": "registry-1.docker.io/docker"

開發中的功能

參數作業系統說明版本
allowExperimentalFeatures如果將 value 設定為 false,實驗性功能將會被停用。
allowBetaFeatures如果將 value 設定為 false,測試版功能將會被停用。

增強型容器隔離

參數作業系統說明版本
enhancedContainerIsolation如果將 value 設定為 true,Docker Desktop 將會透過 Linux 使用者命名空間以非特權身分執行所有容器,防止它們修改 Docker Desktop VM 內的敏感設定,並使用其他進階技術將它們隔離。如需詳細資訊,請參閱 增強型容器隔離
       dockerSocketMount預設情況下,增強型容器隔離會封鎖將 Docker Engine socket 掛載到容器中(例如,docker run -v /var/run/docker.sock:/var/run/docker.sock ...)。這讓您可以以受控的方式放寬此限制。如需詳細資訊,請參閱 ECI 設定
              imageList指示允許哪些容器映像檔掛載 Docker Engine socket。
              commandList限制容器可以透過掛載的 Docker Engine socket 發出的指令。

步驟三:重新啟動 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