使用 JSON 文件配置设置管理

注意

设置管理仅适用于 Docker Business 客户。

此页面包含有关如何使用文件配置设置管理的信息。您可以指定和锁定配置参数,以在整个公司或组织中创建标准化的 Docker Desktop 环境。admin-settings.json

“设置管理”专为不向开发人员提供计算机 root 访问权限的组织而设计。

先决条件

您首先需要强制登录,以确保所有 Docker Desktop 开发人员都向您的组织进行身份验证。由于“设置管理”需要 Docker Business 订阅,因此强制登录可保证只有经过身份验证的用户才能访问,并且该功能在所有用户中始终有效,即使它可能在没有强制登录的情况下仍然有效。

第一步:创建 admin-settings.json 文件并将其保存在正确的位置

您可以在 macOSWindows 上使用安装程序标志自动创建并将其保存在正确的位置,也可以手动设置。--admin-settingsadmin-settings.json

要手动设置它:

  1. 创建一个新的空 JSON 文件并将其命名为 .admin-settings.json

  2. 将文件保存在开发人员计算机上的以下位置:admin-settings.json

    • 苹果电脑:/Library/Application\ Support/com.docker.docker/admin-settings.json
    • 窗户:C:\ProgramData\DockerDesktop\admin-settings.json
    • Linux的:/usr/share/docker-desktop/admin-settings.json

    将此文件放在受保护的目录中,开发人员无法对其进行修改。

    重要

    假定您能够将设置文件推送到通过设备管理软件(如 Jamf)指定的位置。admin-settings.json

第 2 步:配置要锁定的设置

注意

某些配置参数仅适用于某些平台或特定的 Docker Desktop 版本。下表中突出显示了这一点。

该文件需要一个嵌套的配置参数列表,每个参数都必须包含该参数。您可以根据需要添加或删除配置参数。admin-settings.jsonlocked

如果 ,用户无法从 Docker Desktop 或 CLI 编辑此设置。locked: true

如果 ,则类似于设置出厂默认值:locked: false

  • 对于新安装,请在 Docker Desktop Dashboard 中预填充相关设置,但用户可以对其进行修改。locked: false

  • 如果已安装并正在使用 Docker Desktop,则忽略。这是因为 Docker Desktop 的现有用户可能已经更新了设置,而该设置又将写入相关的配置文件,例如(对于 Docker Desktop 版本 4.34 及更早版本)或 .在这些情况下,将遵循用户的首选项,并且不会更改值。这些可以通过设置 来控制。locked: falsesettings-store.jsonsettings.jsondaemon.jsonlocked: 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如果设置为 false,则 Docker Desktop 不会向 Docker 发送使用情况统计信息。value
disableUpdate如果设置为 true,则禁用 Docker Desktop 更新的检查和通知。value
extensionsEnabled如果设置为 false,则禁用 Docker 扩展。value
blockDockerLoad如果设置为 ,则用户将无法再运行 docker load,并在尝试运行时收到错误。valuetrue
displayedOnboarding如果设置为 ,则不会向新用户显示载入调查。设置为 不起作用。valuetruevaluefalseDocker Desktop 版本 4.30 及更高版本
desktopTerminalEnabled如果设置为 ,则开发人员无法使用 Docker 终端与主机交互并直接从 Docker Desktop 执行命令。valuefalse
exposeDockerAPIOnTCP2375仅限 Windows在指定端口上公开 Docker API。如果设置为 true,则 Docker API 将在端口 2375 上公开。注意:这是未经身份验证的,只有在受合适的防火墙规则保护时才应启用。value

文件共享和仿真

参数操作系统描述版本
filesharingAllowedDirectories指定开发人员可以将文件共享添加到的路径。也接受 、 或 作为变量。添加路径时,允许其子目录。如果设置为 ,则将在恢复出厂设置或 Docker Desktop 首次启动时添加该路径。$HOME$TMP$TEMPpathsharedByDefaulttrue
useVirtualizationFrameworkVirtioFS仅限 macOS如果设置为 ,则 VirtioFS 将设置为文件共享机制。注意:如果两者兼而有之 和 都设置为 ,则 VirtioFS 优先。同样,如果 和 都设置为 ,则 osxfs 将设置为文件共享机制。valuetrueuseVirtualizationFrameworkVirtioFSuseGrpcfusevaluetrueuseVirtualizationFrameworkVirtioFSuseGrpcfusevaluefalse
useGrpcfuse仅限 macOS如果设置为 ,则 gRPC Fuse 将设置为文件共享机制。valuetrue
useVirtualizationFrameworkRosetta仅限 macOS如果设置为 ,Docker Desktop 将打开 Rosetta 以加速 Apple Silicon 上的 x86_64/amd64 二进制仿真。注意:这也会自动启用 .valuetrueUse Virtualization frameworkDocker Desktop 版本 4.29 及更高版本。

Docker 侦查兵

参数操作系统描述版本
scout设置为禁用加载到镜像存储的镜像的自动索引。设置为 可防止用户通过在 Docker Desktop 中检查镜像或使用 CLI 命令来为镜像编制索引。useBackgroundIndexingfalsesbomIndexingfalsedocker scout

代理

参数操作系统描述版本
proxy如果设置为 而不是 ,则 Docker Desktop 从系统获取代理值,并忽略为 、 和 设置的值。更改为 以手动配置代理服务器。如果代理端口是自定义的,请在 or 属性中指定它,例如 。该属性指定要绕过代理的主机和域的逗号分隔列表。modesystemmanualhttphttpsexcludemodemanualhttphttps"https": "http://myotherproxy.com:4321"exclude
       windowsDockerdPort仅限 Windows在此端口上本地公开 Docker Desktop 的内部代理,以便 Windows Docker 守护程序连接到。如果设置为 0,则选择随机 free port。如果该值大于 0,则对端口使用该确切值。默认值为 -1,这将禁用该选项。
       enableKerberosNtlm设置为 时,将启用 Kerberos 和 NTLM 身份验证。默认值为 。有关更多信息,请参阅设置文档。truefalseDocker Desktop 版本 4.32 及更高版本。

容器代理

参数操作系统描述版本
containersProxy创建气隙容器。有关更多信息,请参阅气隙容器Docker Desktop 版本 4.29 及更高版本。

Linux 虚拟机

参数操作系统描述版本
linuxVM与 Linux VM 选项相关的参数和设置 - 为方便起见,此处分组在一起。
       wslEngineEnabled仅限 Windows如果设置为 true,则 Docker Desktop 使用基于 WSL 2 的引擎。这将覆盖在安装时可能使用 flag 设置的任何内容。value--backend=<backend name>
       dockerDaemonOptions如果设置为 true,它将覆盖 Docker Engine 配置文件中的选项。请参阅 Docker Engine 参考。请注意,为了提高安全性,在启用增强型容器隔离时,可能会覆盖一些 config 属性。value
       vpnkitCIDR覆盖用于 vpnkit DHCP/DNS 的网络范围*.docker.internal

Windows 容器

参数操作系统描述版本
windowsContainers与选项相关的参数和设置 - 为方便起见,此处将其分组在一起。windowsContainers
       dockerDaemonOptions覆盖 Linux 守护程序配置文件中的选项。请参阅 Docker Engine 参考

注意

此设置无法通过 Docker Admin Console 进行配置。

Kubernetes (简体中文)

参数操作系统描述版本
kubernetes如果设置为 true,则 Kubernetes 单节点集群将在 Docker Desktop 启动时启动。如果设置为 true,则 Kubernetes 容器将显示在 Docker Desktop Dashboard 中,当您运行 . 允许您指定 Docker Desktop 从哪个存储库中提取 Kubernetes 镜像。例如。enabledshowSystemContainersdocker psimagesRepository"imagesRepository": "registry-1.docker.io/docker"

开发中的功能

参数操作系统描述版本
allowExperimentalFeatures如果设置为 ,则会禁用实验性功能。valuefalse
allowBetaFeatures如果设置为 ,则禁用 Beta 版功能。valuefalse

增强的容器隔离

参数操作系统描述版本
enhancedContainerIsolation如果设置为 true,则 Docker Desktop 将通过 Linux 用户命名空间以无特权方式运行所有容器,防止它们修改 Docker Desktop VM 内的敏感配置,并使用其他高级技术来隔离它们。有关更多信息,请参阅增强的容器隔离value
       dockerSocketMount默认情况下,增强的容器隔离会阻止将 Docker Engine 套接字绑定挂载到容器中(例如)。这使您可以以可控的方式放松它。有关更多信息,请参阅 ECI 配置docker run -v /var/run/docker.sock:/var/run/docker.sock ...
              imageList指示允许哪些容器镜像绑定挂载 Docker Engine 套接字。
              commandList限制容器可以通过绑定挂载的 Docker Engine 套接字发出的命令。

第 3 步:重新启动 Docker Desktop

注意

在本地测试通过文件所做的更改,以查看设置是否按预期工作。admin-settings.json

要使设置生效:

  • 在新安装时,开发人员需要启动 Docker Desktop 并向其组织进行身份验证。
  • 在现有安装中,开发人员需要通过 Docker 菜单退出 Docker Desktop,然后重新启动 Docker Desktop。如果他们已经登录,则无需再次登录即可使更改生效。

    重要

    从 Docker 菜单中选择 Restart 是不够的,因为它只会重新启动 Docker Desktop 的某些组件。

为了不中断开发人员的工作流程,Docker 不会自动要求开发人员在进行更改后重新启动并重新进行身份验证。

在 Docker Desktop 中,开发人员会看到相关设置灰显,并显示 Locked by your administrator(由管理员锁定)消息。

Proxy settings grayed out with Settings Management