使用 JSON 文件配置设置管理

注意

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

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

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

先决条件

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

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

您可以使用--admin-settingsinstaller 标志以自动创建admin-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

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

    重要

    假设你有能力推送admin-settings.json设置文件设置为通过设备管理软件(如 Jamf)指定的位置。

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

注意

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

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

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

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

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

  • 如果 Docker Desktop 已安装并正在使用,则locked: false被忽略。这是因为 Docker Desktop 的现有用户可能已经更新了一个设置,而该设置又将写入相关的配置文件,例如settings-store.json(或settings.json对于 Docker Desktop 版本 4.34 及更早版本)或daemon.json.在这些情况下,将遵循用户的首选项,并且不会更改值。这些可以通过设置locked: true.

以下内容admin-settings.jsoncode 和 table 提供了参数和值所需的语法和描述的示例:

{
  "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,则不会向新用户显示入门调查。设置valuefalse没有效果。Docker Desktop 版本 4.30 及更高版本
desktopTerminalEnabled如果value设置为false,开发人员无法使用 Docker 终端与主机交互并直接从 Docker Desktop 执行命令。
exposeDockerAPIOnTCP2375仅限 Windows在指定端口上公开 Docker API。如果value设置为 true,则 Docker API 将在端口 2375 上公开。注意:这是未经身份验证的,只有在受合适的防火墙规则保护时才应启用。

文件共享和仿真

参数操作系统描述版本
filesharingAllowedDirectories指定开发人员可以将文件共享添加到的路径。也接受$HOME,$TMP$TEMPpath变量。添加路径时,允许其子目录。如果sharedByDefault设置为true,该路径将在恢复出厂设置或 Docker Desktop 首次启动时添加。
useVirtualizationFrameworkVirtioFS仅限 macOS如果value设置为true,则 VirtioFS 被设置为文件共享机制。注意:如果两者都useVirtualizationFrameworkVirtioFSuseGrpcfusevalue设置为true,则 VirtioFS 优先。同样,如果两者都useVirtualizationFrameworkVirtioFSuseGrpcfusevalue设置为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设置useBackgroundIndexingfalse禁用加载到镜像存储的镜像的自动索引。设置sbomIndexingfalse阻止用户通过在 Docker Desktop 中检查镜像或使用docker scoutCLI 命令。

代理

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

容器代理

参数操作系统描述版本
containersProxy创建Air-gapped containers。有关更多信息,请参阅Air-gapped containersDocker 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 参考。请注意,为了提高安全性,在启用增强型容器隔离时,可能会覆盖一些 config 属性。
       vpnkitCIDR覆盖用于 vpnkit DHCP/DNS 的网络范围*.docker.internal

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": "registry-1.docker.io/docker".

开发中的功能

参数操作系统描述版本
allowExperimentalFeatures如果value设置为false,则实验性功能将被禁用。
allowBetaFeatures如果value设置为false,则 Beta 版功能处于禁用状态。

增强的容器隔离

参数操作系统描述版本
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 套接字发出的命令。

第 3 步:重新启动 Docker Desktop

注意

测试通过admin-settings.jsonfile 以查看设置是否按预期工作。

要使设置生效:

  • 在新安装时,开发人员需要启动 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