使用 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 套接字可以发出的命令。 |