使用 JSON 檔案配置設定管理
設定管理讓您可以使用 `admin-settings.json` 檔案在您的組織中配置和強制執行 Docker Desktop 設定。這將標準化 Docker Desktop 環境,並確保所有使用者都有一致的配置。
先決條件
開始之前,請確保您已具備以下條件:
- 針對您的組織強制登入
- Docker 商務版訂閱
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
- Mac:
重要將檔案放置在受保護的目錄中,以防止未經授權的更改。使用行動裝置管理 (MDM) 工具(例如 Jamf)在您的組織中大規模分發該檔案。
步驟二:配置設定
提示有關所有可用設定、其支援的平台以及適用的配置方法的完整列表,請參閱設定參考。
`admin-settings.json` 檔案使用結構化鍵來定義可配置的設定以及值是否被強制執行。
每個設定都支援一個 `locked` 欄位,用於控制使用者權限:
- 當 `locked` 設為 `true` 時,使用者無法在 Docker Desktop、CLI 或配置檔案中更改該值。
- 當 `locked` 設為 `false` 時,該值就像一個預設建議,使用者仍然可以更新它。
如果使用者已在 `settings-store.json`、`settings.json` 或 `daemon.json` 中自訂了該值,則在現有安裝中會忽略 `locked` 設為 `false` 的設定。
分組設定
Docker Desktop 將一些設定分組在一起,並透過一個單一的切換開關控制整個區塊。這些包括:
- 增強容器隔離 (Enhanced Container Isolation, ECI):使用一個主切換開關 (`enhancedContainerIsolation`) 來啟用/禁用整個功能,並提供特定配置的子設定
- Kubernetes:使用一個主切換開關 (`kubernetes.enabled`),並提供叢集配置的子設定
- Docker Scout:將設定分組在 `scout` 物件下
配置分組設定時:
- 設定主切換開關以啟用該功能
- 配置該群組內的子設定
- 當您鎖定主切換開關時,使用者無法修改該群組中的任何設定。
`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 重新啟動且使用者登入後生效。
對於新安裝:
- 啟動 Docker Desktop。
- 使用您的 Docker 帳戶登入。
對於現有安裝:
- 完全退出 Docker Desktop。
- 重新啟動 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`,將不會向新使用者顯示 onboarding 歡迎問卷。將 `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 將被設為檔案共享機制。注意:如果 `useVirtualizationFrameworkVirtioFS` 和 `useGrpcfuse` 的 `value` 都設為 `true`,則 VirtioFS 優先。同樣地,如果兩者的 `value` 都設為 `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
| 參數 | 作業系統 | 描述 | 版本 |
|---|---|---|---|
scout | 將 `useBackgroundIndexing` 設為 `false` 會禁用載入到映像儲存的映像自動索引。將 `sbomIndexing` 設為 `false` 會阻止使用者透過在 Docker Desktop 中檢查映像或使用 `docker scout` CLI 命令來索引映像。 |
代理伺服器設定
| 參數 | 作業系統 | 描述 | 版本 |
|---|---|---|---|
proxy | 如果 `mode` 設為 `system` 而非 `manual`,Docker Desktop 會從系統取得代理伺服器值,並忽略為 `http`、`https` 和 `exclude` 設定的值。將 `mode` 更改為 `manual` 以手動配置代理伺服器。如果代理伺服器連接埠是自訂的,請在 `http` 或 `https` 屬性中指定,例如 `"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 虛擬機選項相關的參數和設定 — 為方便起見,此處將它們分組。 | ||
wslEngineEnabled | 僅限 Windows | 如果 `value` 設為 true,Docker Desktop 將使用基於 WSL 2 的引擎。這會覆蓋安裝時使用 `--backend=<後端名稱>` 旗標可能已設定的任何內容。 | |
dockerDaemonOptions | 如果 `value` 設為 true,它會覆寫 Docker Engine 配置檔中的選項。請參閱 Docker Engine 參考。請注意,為了增加安全性,當啟用增強容器隔離時,部分配置屬性可能會被覆寫。 | ||
vpnkitCIDR | 覆寫用於 `*.docker.internal` 的 vpnkit DHCP/DNS 的網路範圍 |
Windows 容器
| 參數 | 作業系統 | 描述 | 版本 |
|---|---|---|---|
windowsContainers | 與 `windowsContainers` 選項相關的參數和設定 — 為方便起見,此處將它們分組。 | ||
dockerDaemonOptions | 覆寫 Linux 守護程式配置檔中的選項。請參閱 Docker Engine 參考。 |
注意此設定無法透過 Docker 管理主控台進行配置。
Kubernetes 設定
| 參數 | 作業系統 | 描述 | 版本 |
|---|---|---|---|
kubernetes | 如果 `enabled` 設為 true,當 Docker Desktop 啟動時,一個 Kubernetes 單節點叢集將會啟動。如果 `showSystemContainers` 設為 true,Kubernetes 容器將會顯示在 Docker Desktop 儀表板中,以及當您執行 `docker ps` 時。這個 imagesRepository 設定讓您可以指定 Docker Desktop 從哪個儲存庫提取控制平面 Kubernetes 映像。 |
注意將 `imagesRepository` 與增強容器隔離 (ECI) 搭配使用時,請將這些映像新增至 ECI Docker socket 掛載映像列表
[imagesRepository]/desktop-cloud-provider-kind:[imagesRepository]/desktop-containerd-registry-mirror:這些容器會掛載 Docker socket,因此您必須將它們新增到 ECI 映像列表中。否則,ECI 將會阻止掛載,且 Kubernetes 將無法啟動。
網路設定
| 參數 | 作業系統 | 描述 | 版本 |
|---|---|---|---|
defaultNetworkingMode | 僅限 Windows 和 Mac | 定義新 Docker 網路的預設 IP 協定:dual-stack (IPv4 + IPv6,預設值),ipv4only,或 ipv6only。 | Docker Desktop 4.43 版及更高版本。 |
dnsInhibition | 僅限 Windows 和 Mac | 控制傳回給容器的 DNS 記錄過濾。選項:auto (推薦),ipv4,ipv6,none | Docker 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 (詢問 Gordon)。您可以獨立於 `allowBetaFeatures` 設定來控制此設定。 | ||
enableDockerMCPToolkit | 如果 `allowBetaFeatures` 為 true,將 `enableDockerMCPToolkit` 設為 `true` 會預設啟用 MCP 工具包功能。您可以獨立於 `allowBetaFeatures` 設定來控制此設定。 | ||
allowExperimentalFeatures | 如果 `value` 設為 `true`,實驗性功能將啟用。 | Docker Desktop 4.41 版及更早版本 |
增強容器隔離
| 參數 | 作業系統 | 描述 | 版本 |
|---|---|---|---|
enhancedContainerIsolation | 如果 `value` 設為 true,Docker Desktop 將透過 Linux 使用者命名空間,以非特權方式執行所有容器,阻止它們修改 Docker Desktop 虛擬機內的敏感配置,並使用其他進階技術來隔離它們。有關更多資訊,請參閱 增強容器隔離。 | ||
dockerSocketMount | 預設情況下,增強容器隔離會阻止將 Docker Engine socket 綁定掛載到容器中(例如,docker run -v /var/run/docker.sock:/var/run/docker.sock ...)。這讓您可以以受控方式放寬此限制。有關更多資訊,請參閱 ECI 配置。 | ||
imageList | 指示哪些容器映像允許綁定掛載 Docker Engine socket。 | ||
commandList | 限制容器可以透過綁定掛載的 Docker Engine socket 發出的命令。 |