配置设置管理

注意

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

此页面包含有关管理员如何配置设置管理以指定和锁定配置参数以在整个组织中创建标准化的 Docker Desktop 环境的信息。

设置管理专门为不向开发人员提供其机器的根访问权限的组织而设计。

先决条件

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

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

要手动进行设置

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

  2. 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 设置文件推送到上述指定位置。

步骤二:配置您要锁定的设置

注意

某些配置参数仅适用于 Windows。下表中突出显示了这一点。

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

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

如果 locked: false,则类似于在工厂默认值中设置,即

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

  • 如果 Docker Desktop 已经安装并正在使用,则会忽略 locked: false。这是因为 Docker Desktop 的现有用户可能已经更新了某个设置,该设置反过来又会写入相关的配置文件,例如 settings.jsondaemon.json。在这种情况下,会尊重用户的首选项,我们不会更改这些值。管理员可以通过将 locked: true 设置为 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
  }
}
参数描述
configurationFileVersion指定配置文件格式的版本。
exposeDockerAPIOnTCP2375仅限 Windows在指定端口上公开 Docker API。如果将 value 设置为 true,则 Docker API 将在端口 2375 上公开。注意:这是未经身份验证的,仅应在受适当防火墙规则保护的情况下启用。
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,它会禁用该选项。注意:这仅适用于 Windows 容器。
       enableKerberosNtlm当设置为 true 时,将启用 Kerberos 和 NTLM 身份验证。默认值为 false。在 Docker Desktop 4.32 及更高版本中可用。有关更多信息,请参阅设置文档。
containersProxy(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 套接字发出的命令。
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 的网络范围
kubernetes如果将 enabled 设置为 true,则在 Docker Desktop 启动时,将启动一个 Kubernetes 单节点集群。如果将 showSystemContainers 设置为 true,则 Kubernetes 容器将显示在 UI 中,以及在您运行 docker ps 时。imagesRepository 允许您指定 Docker Desktop 从中拉取 Kubernetes 镜像的代码库。例如,"imagesRepository": "registry-1.docker.io/docker"
windowsContainerswindowsContainers 选项相关的参数和设置 - 为方便起见,它们在此处分组在一起。
       dockerDaemonOptions覆盖 Linux 守护程序配置文件中的选项。请参阅 Docker Engine 参考
disableUpdate如果将 value 设置为 true,则会禁用检查 Docker Desktop 更新和有关更新的通知。
analyticsEnabled如果将 value 设置为 false,Docker Desktop 不会向 Docker 发送使用情况统计信息。
extensionsEnabled如果将 value 设置为 false,则会禁用 Docker 扩展。
scoutuseBackgroundIndexing设置为false将禁用对加载到图像存储的图像的自动索引。将sbomIndexing设置为false将阻止用户通过在 Docker Desktop 中检查图像或使用docker scout CLI 命令来索引图像。
allowExperimentalFeatures如果value设置为false,则禁用实验性功能。
allowBetaFeatures如果value设置为false,则禁用测试版功能。
blockDockerLoad如果value设置为true,用户将不再能够运行docker load,如果尝试运行,将收到错误消息。
filesharingAllowedDirectories指定您的开发人员可以添加文件共享的路径。还可以接受$HOME$TMP$TEMP作为path变量。添加路径后,其子目录也将被允许。如果sharedByDefault设置为true,则该路径将在出厂重置或 Docker Desktop 首次启动时添加。
useVirtualizationFrameworkVirtioFS仅限 macOS如果value设置为true,则 VirtioFS 将被设置为文件共享机制。注意:如果useVirtualizationFrameworkVirtioFSuseGrpcfusevalue都设置为true,则 VirtioFS 优先。同样,如果useVirtualizationFrameworkVirtioFSuseGrpcfusevalue都设置为false,则 osxfs 将被设置为文件共享机制。
useVirtualizationFrameworkRosetta仅限 macOS如果value设置为true,Docker Desktop 将开启 Rosetta 以加速 Apple Silicon 上的 x86_64/amd64 二进制模拟。注意:这也会自动启用“使用虚拟化框架”。
useGrpcfuse仅限 macOS如果value设置为true,则 gRPC Fuse 将被设置为文件共享机制。
displayedOnboarding如果value设置为true,则不会向新用户显示 onboarding 调查。将value设置为false无效。

步骤三:重新启动 Docker Desktop

注意

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

要使设置生效

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

    重要

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

Docker 不会自动强制开发人员在更改后重新启动并登录,以免扰乱开发人员的工作流程。

在 Docker Desktop 中,开发人员会看到相关的设置变灰,并显示消息“被您的管理员锁定”。

Proxy settings grayed out with Settings Management