使用 JSON 檔案配置設定管理
設定管理允許您使用 admin-settings.json
檔案在整個組織中配置和強制執行 Docker Desktop 設定。這可以標準化 Docker Desktop 環境並確保所有使用者都具有一致的配置。
先決條件
在開始之前,請確保您已具備:
- 為您的組織強制執行登入
- Docker Business 訂閱
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 將一些設定與一個控制整個部分的開關分組在一起。這些包括:
- 增強容器隔離 (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 ,則不會向新使用者顯示新手引導調查。將 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 優先。同樣,如果 useVirtualizationFrameworkVirtioFS 和 useGrpcfuse 都將 value 設定為 false ,則 osxfs 被設定為檔案共享機制。 | |
useGrpcfuse | 僅限 macOS | 如果 value 設定為 true ,則 gRPC Fuse 被設定為檔案共享機制。 | |
useVirtualizationFrameworkRosetta | 僅限 macOS | 如果 value 設定為 true ,Docker Desktop 會開啟 Rosetta 以加速 Apple Silicon 上 x86_64/amd64 二進位制模擬。注意:這也會自動啟用 Use Virtualization framework 。 | 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 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 容器
引數 | 作業系統 | 描述 | 版本 |
---|---|---|---|
windowsContainers | 與 windowsContainers 選項相關的引數和設定 - 為方便起見在此處分組。 | ||
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,預設)、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 (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 套接字可以發出的命令。 |