使用 JSON 文件配置设置管理

订阅: 商业版
适用于: 管理员

设置管理允许您使用 admin-settings.json 文件在整个组织中配置和强制执行 Docker Desktop 设置。这可以标准化 Docker Desktop 环境并确保所有用户都具有一致的配置。

先决条件

在开始之前,请确保您已具备:

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
重要

将文件放置在受保护的目录中,以防止未经授权的更改。使用移动设备管理 (MDM) 工具(如 Jamf)在您的组织中大规模分发文件。

第二步:配置设置

提示

有关可用设置、其支持的平台以及其适用的配置方法的完整列表,请参阅设置参考

admin-settings.json 文件使用结构化键来定义可配置的设置以及是否强制执行这些值。

每个设置都支持一个控制用户权限的 locked 字段:

  • locked 设置为 true 时,用户无法在 Docker Desktop、CLI 或配置文件中更改该值。
  • locked 设置为 false 时,该值作为默认建议,用户仍然可以更新它。

如果用户已经在 settings-store.jsonsettings.jsondaemon.json 中自定义了某个值,则现有安装会忽略 locked 设置为 false 的设置。

分组设置

Docker Desktop 将一些设置与一个控制整个部分的开关分组在一起。这些包括:

  • 增强容器隔离 (ECI):使用一个主开关 (enhancedContainerIsolation) 来启用/禁用整个功能,并带有用于特定配置的子设置
  • Kubernetes:使用一个主开关 (kubernetes.enabled) 和用于集群配置的子设置
  • Docker Scout:将设置分组在 scout 对象下

配置分组设置时:

  1. 设置主开关以启用该功能
  2. 在该组中配置子设置
  3. 当您锁定主开关时,用户无法修改该组中的任何设置

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 重启且用户登录后生效。

对于新安装:

  1. 启动 Docker Desktop。
  2. 使用您的 Docker 帐户登录。

对于现有安装:

  1. 完全退出 Docker Desktop。
  2. 重新启动 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 被设置为文件共享机制。注意:如果 useVirtualizationFrameworkVirtioFSuseGrpcfuse 都将 value 设置为 true,则 VirtioFS 优先。同样,如果 useVirtualizationFrameworkVirtioFSuseGrpcfuse 都将 value 设置为 false,则 osxfs 被设置为文件共享机制。
useGrpcfuse仅限 macOS如果 value 设置为 true,则 gRPC Fuse 被设置为文件共享机制。
useVirtualizationFrameworkRosetta仅限 macOS如果 value 设置为 true,Docker Desktop 会开启 Rosetta 以加速 Apple Silicon 上 x86_64/amd64 二进制仿真。注意:这也会自动启用 Use Virtualization frameworkDocker Desktop 4.29 及更高版本。

Docker Scout

参数操作系统描述版本
scoutuseBackgroundIndexing 设置为 false 会禁用对加载到镜像存储的镜像的自动索引。将 sbomIndexing 设置为 false 会阻止用户通过在 Docker Desktop 中检查镜像或使用 docker scout CLI 命令来索引镜像。

代理设置

参数操作系统描述版本
proxy如果 mode 设置为 system 而不是 manual,Docker Desktop 会从系统获取代理值,并忽略为 httphttpsexclude 设置的任何值。将 mode 更改为 manual 以手动配置代理服务器。如果代理端口是自定义的,请在 httphttps 属性中指定,例如 "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 容器

参数操作系统描述版本
windowsContainerswindowsContainers 选项相关的参数和设置 - 为方便起见在此处分组。
       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,默认)、ipv4onlyipv6onlyDocker Desktop 4.43 及更高版本。
dnsInhibition仅限 Windows 和 Mac控制返回给容器的 DNS 记录过滤。选项:auto(推荐)、ipv4ipv6noneDocker 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 套接字可以发出的命令。
© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.