使用JSON文件配置设置管理
注意
设置管理仅适用于Docker Business客户。
此页面包含有关如何使用admin-settings.json
文件配置设置管理的信息。您可以指定和锁定配置参数,以在您的公司或组织中创建标准化的Docker Desktop环境。
设置管理专为不向开发者授予其机器root访问权限的组织而设计。
先决条件
您首先需要强制登录,以确保所有Docker Desktop开发者都使用您的组织进行身份验证。由于设置管理需要Docker Business订阅,因此强制登录可确保只有经过身份验证的用户才能访问,并且该功能在所有用户中始终生效,即使它可能在没有强制登录的情况下仍然有效。
第一步:创建admin-settings.json
文件并将其保存到正确的目录
您可以在macOS或Windows上使用--admin-settings
安装程序标志自动创建admin-settings.json
并将其保存到正确的目录,或者手动设置它。
要手动设置它
创建一个新的空JSON文件,并将其命名为
admin-settings.json
。将
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
设置文件推送到指定位置。- Mac:
第二步:配置要锁定的设置
注意
某些配置参数仅适用于某些平台或特定的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设置为文件共享机制。注意:如果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二进制模拟。注意:这还会自动启用“使用虚拟化框架”。 | 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管理员控制台进行配置。
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虚拟机中的敏感配置,并使用其他高级技术来隔离它们。有关更多信息,请参阅增强型容器隔离。 | ||
dockerSocketMount | 默认情况下,增强型容器隔离会阻止将Docker Engine套接字绑定安装到容器中(例如,docker run -v /var/run/docker.sock:/var/run/docker.sock ... )。这允许您以受控方式放松此限制。有关更多信息,请参阅ECI配置。 | ||
imageList | 指示允许哪些容器镜像绑定安装Docker Engine套接字。 | ||
commandList | 限制容器可以通过绑定安装的Docker Engine套接字发出的命令。 |
第三步:重新启动Docker Desktop
注意
在本地测试通过
admin-settings.json
文件所做的更改,以查看设置是否按预期工作。
要使设置生效
- 在新安装中,开发人员需要启动Docker Desktop并对其组织进行身份验证。
- 在现有安装中,开发人员需要通过Docker菜单退出Docker Desktop,然后重新启动Docker Desktop。如果他们已经登录,则无需再次登录即可使更改生效。
重要
从Docker菜单中选择“重新启动”是不够的,因为它只会重新启动Docker Desktop的某些组件。
为避免中断开发人员的工作流程,Docker不会自动强制开发人员在进行更改后重新启动和重新进行身份验证。
在Docker Desktop中,开发人员会看到相关的设置显示为灰色,并显示消息“管理员已锁定”。

