Docker Engine version 28 release notes

本页描述了 Docker Engine 版本 28 的最新更改、新增功能、已知问题和修复。

有关更多信息,请参阅:

28.5.2

2025-11-05

有关此版本中 pull request 和更改的完整列表,请参阅相关的 GitHub 里程碑:

Caution

此版本包含对 runc 中三个严重安全漏洞的修复:

这三个漏洞最终都允许(通过不同方法)通过绕过 runc 对写入任意 /proc 文件的限制来实现完全的容器逃逸。

Bug 修复和增强

  • dockerd-rootless.sh: 如果未安装 slirp4netns,则尝试使用 pasta (passt)。moby/moby#51162

打包更新

弃用

  • Go-SDK: cli/command/image/build: 弃用 DefaultDockerfileNameDetectArchiveReaderWriteTempDockerfileResolveAndValidateContextPath。这些工具仅在内部使用,将在下一个版本中移除。docker/cli#6610
  • Go-SDK: cli/command/image/build: 弃用 IsArchive 工具。docker/cli#6560
  • Go-SDK: opts: 弃用 ValidateMACAddressdocker/cli#6560
  • Go-SDK: opts: 弃用 ListOpts.Delete()。docker/cli#6560

28.5.1

2025-10-08

有关此版本中 pull request 和更改的完整列表,请参阅相关的 GitHub 里程碑:

Bug 修复和增强

弃用

  • api/types/image: InspectResponse: 弃用 ParentDockerVersion 字段。moby/moby#51105
  • api/types/plugin: 弃用 Config.DockerVersion 字段。moby/moby#51110

28.5.0

2025-10-02

有关此版本中 pull request 和更改的完整列表,请参阅相关的 GitHub 里程碑:

Warning

Raspberry Pi OS 32位 (armhf) 弃用

Docker Engine v28 将是支持 Raspberry Pi OS 32位 (armhf) 的最后一个主要版本。 从 Docker Engine v29 开始,新的主要版本将不再提供 Raspberry Pi OS 32位 (armhf) 的软件包。

迁移选项

  • 64位 ARM: 安装 Debian arm64 软件包(完全支持)。
  • 32位 ARM (v7): 安装 Debian armhf 软件包(针对 ARMv7 CPU)。

注意: 基于 ARMv6 架构的旧设备不再受官方软件包支持,包括:

  • Raspberry Pi 1 (Model A/B/A+/B+)
  • Raspberry Pi Zero 和 Zero W

Bug 修复和增强

  • 在 CLI 插件目录中,对于损坏的符号链接,不要在 docker info 中打印警告。docker/cli#6476
  • 修复在空的 Actor.ID 事件上 stats 时的 panic。docker/cli#6471

打包更新

网络

  • 消除了关于从数据存储中删除 endpoint_count 的无害警告。moby/moby#51064
  • 修复导致 IPAM 插件在 Windows 上无法加载的错误。moby/moby#51035

API

  • 弃用对内核内存 TCP 计费(KernelMemoryTCP)的支持。moby/moby#51067
  • 修复 GET containers/{name}/checkpoints 在没有检查点时返回 null 而不是空 JSON 数组的问题。moby/moby#51052

Go SDK

弃用

  • Go-SDK: cli/command: 弃用 DockerCli.Apply。此方法不再使用,如果没有剩余用途,将在下一个版本中移除。docker/cli#6497
  • Go-SDK: cli/command: 弃用 DockerCli.ContentTrustEnabled。此方法不再使用,将在下一个版本中移除。docker/cli#6495
  • Go-SDK: cli/command: 弃用 DockerCli.DefaultVersion。此方法不再使用,将在下一个版本中移除。docker/cli#6491
  • Go-SDK: cli/command: 弃用 ResolveDefaultContext 工具。docker/cli#6529
  • Go-SDK: cli/command: 弃用 WithContentTrustFromEnvWithContentTrust 选项。这些选项在内部使用,将在下一个版本中移除。docker/cli#6489
  • Go-SDK: cli/manifest/store: 弃用 IsNotFound()docker/cli#6514
  • Go-SDK: templates: 弃用 NewParse() 函数。docker/cli#6469

28.4.0

2025-09-03

有关此版本中 pull request 和更改的完整列表,请参阅相关的 GitHub 里程碑:

新增

  • 允许 Docker CLI 在 docker 上下文元数据中存在键值对("GODEBUG":"...")时设置 GODEBUG 环境变量。docker/cli#6399

Bug 修复和增强

  • docker pulldocker image pull 添加 shell 补全。docker/cli#6420
  • 修复 v28.3.3 中的一个回归,如果客户端未发送 X-Registry-Auth 头,可能导致 docker push 时发生 panic。moby/moby#50738
  • Windows: 可能修复拉取镜像时出现"访问被拒绝"错误的问题。moby/moby#50871
  • containerd 镜像存储:修复对本地构建的非本地镜像调用 docker history 时失败,并显示 snapshot X does not exist 的错误。moby/moby#50875
  • containerd 镜像存储:修复 docker image prune 发出正确的 untagdelete 事件,并且只列出已删除镜像的根摘要,而不是每个 blob。moby/moby#50837
  • 在因缺少身份验证而失败后,从 docker pushdocker pull 中移除交互式登录提示。docker/cli#6256

打包更新

网络

  • 修复在 live-restore 时可能导致容器重启缓慢的问题。moby/moby#50829

API

Go SDK

弃用

  • 弃用对 --tlscacert--tlscert--tlskey 命令行标志的引号值的特殊处理。docker/cli#6291
  • 在 v28.4 中将传统链接环境变量(DOCKER_KEEP_DEPRECATED_LEGACY_LINKS_ENV_VARS)标记为已弃用,并设置在 v30.0 中移除。docker/cli#6309
  • Go-SDK: 弃用字段 NetworkSettingsBase.Bridge、结构 NetworkSettingsBaseDefaultNetworkSettings 的所有字段以及结构 DefaultNetworkSettingsmoby/moby#50839
  • Go-SDK: api/types: build.CacheDiskUsagecontainer.DiskUsageimages.DiskUsagevolumes.DiskUsage 现已弃用,将在下一个主要版本中移除。moby/moby#50768
  • Go-SDK: cli-plugins/manager: 弃用 ReexecEnvvardocker/cli#6411
  • Go-SDK: cli-plugins/manager: 弃用注释别名(CommandAnnotationPluginCommandAnnotationPluginVendorCommandAnnotationPluginVersionCommandAnnotationPluginInvalidCommandAnnotationPluginCommandPath),推荐使用 cli-plugins/manager/metadata 中的等效项。docker/cli#6298
  • Go-SDK: cli-plugins/manager: 弃用元数据别名(NamePrefixMetadataSubcommandNameHookSubcommandNameMetadataReexecEnvvar),推荐使用 cli-plugins/manager/metadata 中的等效项。docker/cli#6269
  • Go-SDK: cli-plugins/manager: 移除 Candidate 接口,该接口仅供内部使用。docker/cli#6269
  • Go-SDK: cli-plugins/manager: 移除 NewPluginError 函数,该函数仅供内部使用。docker/cli#6269
  • Go-SDK: cli-plugins/manager: 移除已弃用的 ResourceAttributesEnvvar 常量。docker/cli#6269
  • Go-SDK: cli/command/builder: 弃用 NewBuilderCommandNewBakeStubCommand。这些函数将在下一个版本中移除。docker/cli#6312
  • Go-SDK: cli/command/builder: 弃用 NewPruneCommanddocker/cli#6343
  • Go-SDK: cli/command/checkpoint: 弃用 NewCheckpointCommand。此函数将在下一个版本中移除。docker/cli#6312
  • Go-SDK: cli/command/checkpoint: 弃用 NewFormatFormatWritedocker/cli#6341
  • Go-SDK: cli/command/completion: 弃用 NoCompletedocker/cli#6405
  • Go-SDK: cli/command/completion: 移除已弃用的 ValidArgsFndocker/cli#6259
  • Go-SDK: cli/command/config: 弃用 NewConfigCommand。此函数将在下一个版本中移除。docker/cli#6312
  • Go-SDK: cli/command/config: 弃用 NewFormatFormatWriteInspectFormatWritedocker/cli#6341
  • Go-SDK: cli/command/config: 弃用 RunConfigCreateCreateOptionsRunConfigInspectInspectOptionsRunConfigListListOptionsRunConfigRemoveRemoveOptionsdocker/cli#6369
  • Go-SDK: cli/command/container: 弃用 NewBuildCommandNewPullCommandNewPushCommandNewImagesCommandNewImageCommandNewHistoryCommandNewImportCommandNewLoadCommandNewRemoveCommandNewSaveCommandNewTagCommandNewPruneCommand。这些函数将在下一个版本中移除。docker/cli#6312
  • Go-SDK: cli/command/container: 弃用 NewDiffFormatDiffFormatWrite。这些函数仅在内部使用,将在下一个版本中移除。docker/cli#6341
  • Go-SDK: cli/command/container: 弃用 NewRunCommandNewExecCommandNewPsCommandNewContainerCommandNewAttachCommandNewCommitCommandNewCopyCommandNewCreateCommandNewDiffCommandNewExportCommandNewKillCommandNewLogsCommandNewPauseCommandNewPortCommandNewRenameCommandNewRestartCommandNewRmCommandNewStartCommandNewStatsCommandNewStopCommandNewTopCommandNewUnpauseCommandNewUpdateCommandNewWaitCommandNewPruneCommand。这些函数将在下一个版本中移除。docker/cli#6312
  • Go-SDK: cli/command/context: 弃用 NewContextCommand。此函数将在下一个版本中移除。docker/cli#6312
  • Go-SDK: cli/command/context: 弃用 RunCreateCreateOptionsdocker/cli#6403
  • Go-SDK: cli/command/context: 弃用 RunExportExportOptionsdocker/cli#6403
  • Go-SDK: cli/command/context: 弃用 RunImportdocker/cli#6403
  • Go-SDK: cli/command/context: 弃用 RunRemoveRemoveOptionsdocker/cli#6403
  • Go-SDK: cli/command/context: 弃用 RunUpdateUpdateOptionsdocker/cli#6403
  • Go-SDK: cli/command/context: 弃用 RunUsedocker/cli#6403
  • Go-SDK: cli/command/image: 弃用 AuthResolver 工具。docker/cli#6357
  • Go-SDK: cli/command/image: 弃用 NewHistoryFormatHistoryWritedocker/cli#6341, docker/cli#6341
  • Go-SDK: cli/command/manifest: 弃用 NewManifestCommand。此函数将在下一个版本中移除。docker/cli#6312
  • Go-SDK: cli/command/network: 弃用 NewFormatFormatWritedocker/cli#6341
  • Go-SDK: cli/command/network: 弃用 NewNetworkCommand。这些函数将在下一个版本中移除。docker/cli#6312
  • Go-SDK: cli/command/node: 弃用 NewFormatFormatWriteInspectFormatWritedocker/cli#6341
  • Go-SDK: cli/command/node: 弃用 NewNodeCommand。此函数将在下一个版本中移除。docker/cli#6312
  • Go-SDK: cli/command/plugin: 弃用 NewFormatFormatWritedocker/cli#6341
  • Go-SDK: cli/command/plugin: 弃用 NewPluginCommand。此函数将在下一个版本中移除。docker/cli#6312
  • Go-SDK: cli/command/registry: 弃用 NewLoginCommandNewLogoutCommandNewSearchCommand。这些函数将在下一个版本中移除。docker/cli#6312
  • Go-SDK: cli/command/registry: 弃用 NewSearchFormatSearchWritedocker/cli#6341
  • Go-SDK: cli/command/registry: 弃用 OauthLoginEscapeHatchEnvVar 常量。docker/cli#6413
  • Go-SDK: cli/command/secret: 弃用 NewFormatFormatWriteInspectFormatWritedocker/cli#6341
  • Go-SDK: cli/command/secret: 弃用 NewSecretCommand。此函数将在下一个版本中移除。docker/cli#6312
  • Go-SDK: cli/command/service: 弃用 NewFormatInspectFormatWritedocker/cli#6341
  • Go-SDK: cli/command/service: 弃用 NewServiceCommand。此函数将在下一个版本中移除。docker/cli#6312
  • Go-SDK: cli/command/stack: 弃用 NewStackCommand。此函数将在下一个版本中移除。docker/cli#6312
  • Go-SDK: cli/command/stack: 弃用 RunListRunServicesdocker/cli#6391
  • Go-SDK: cli/command/swarm: 弃用 NewSwarmCommand。此函数将在下一个版本中移除。docker/cli#6312
  • Go-SDK: cli/command/system: 弃用 NewVersionCommandNewInfoCommandNewSystemCommandNewEventsCommandNewInspectCommand。这些函数将在下一个版本中移除。docker/cli#6312
  • Go-SDK: cli/command/task: 弃用 NewTaskFormatFormatWritedocker/cli#6341
  • Go-SDK: cli/command/trust: 弃用 NewTrustCommand。此函数将在下一个版本中移除。docker/cli#6312
  • Go-SDK: cli/command/trust: 弃用 SignedTagInfoSignerInfoNewTrustTagFormatNewSignerInfoFormatTagWriteSignerInfoWritedocker/cli#6341
  • Go-SDK: cli/command/volume: 弃用 NewVolumeCommandNewPruneCommand。这些函数将在下一个版本中移除。docker/cli#6312
  • Go-SDK: cli/command: 移除 AddTrustSigningFlagsAddTrustVerificationFlagsAddPlatformFlag 工具,这些工具仅在内部使用。docker/cli#6311
  • Go-SDK: cli/command: 移除已弃用的 ConfigureAuth 工具。docker/cli#6257
  • Go-SDK: cli/command: 移除已弃用的 CopyToFile 工具。docker/cli#6257
  • Go-SDK: cli/config/types: 更新 AuthConfig.Email 字段的弃用消息。docker/cli#6392
  • Go-SDK: cli: 弃用 VisitAllDisableFlagsInUseLine 工具。这些工具仅在内部使用,将在下一个版本中移除。docker/cli#6276
  • Go-SDK: cli: 移除 HasCompletionArg 工具。此工具仅在内部使用。docker/cli#6276
  • Go-SDK: 弃用 cli/command.RegistryAuthenticationPrivilegedFuncdocker/cli#6256
  • Go-SDK: 弃用 cli/command/stack/formatter。docker/cli#6391
  • Go-SDK: 弃用 cli/command/stack/loader。docker/cli#6391
  • Go-SDK: 弃用 cli/command/stack/options。docker/cli#6391
  • Go-SDK: 弃用 cli/command/stack/swarm。docker/cli#6391
  • Go-SDK: opts: 弃用 NewNamedListOptsRefNewNamedMapOptsNamedListOptsNamedMapOptsNamedOption。这些类型和函数不再使用,将在下一个版本中移除。docker/cli#6292
  • Go-SDK: opts: 弃用 ParseEnvFile,推荐使用 kvfile.Parsedocker/cli#6381
  • Go-SDK: opts: 弃用 QuotedString。此工具不再使用,将在下一个版本中移除。docker/cli#6275
  • Go-SDK: opts: 弃用 ValidateHost 工具。此函数不再使用,将在下一个版本中移除。docker/cli#6280
  • Go-SDK: pkg/jsonmessage: 弃用 JSONMessage.FromJSONMessage.TimeJSONMessage.TimeNano 字段,因为 API 不再为进度消息返回这些字段。请改用 events.Message 类型来解析 /events 响应。moby/moby#50762
  • Go-SDK: cli/registry/client 包已弃用,将在下一个版本中移除。docker/cli#6313

28.3.3

2025-07-29

有关此版本中 pull request 和更改的完整列表,请参阅相关的 GitHub 里程碑:

安全

此版本修复了一个问题,在 firewalld 重新加载后,发布的容器端口可以直接从本地网络访问,即使它们本意是只能通过环回地址访问。CVE-2025-54388 / GHSA-x4rx-4gw3-53p4 / moby/moby#50506

打包更新

28.3.2

2025-07-09

有关此版本中 pull request 和更改的完整列表,请参阅相关的 GitHub 里程碑:

Bug 修复和增强

  • 修复 --use-api-socket 在 targeting 远程 daemon 时无法正常工作的问题。docker/cli#6157
  • 修复在启用调试日志记录时打印杂散的"otel error"日志的问题。docker/cli#6160
  • 通过 SSH 连接到远程 daemon 时引用 SSH 参数,以避免意外的扩展。docker/cli#6147
  • docker logindocker logout 期间设置了 DOCKER_AUTH_CONFIG 时发出警告。docker/cli#6163

打包更新

28.3.1

2025-07-02

有关此版本中 pull request 和更改的完整列表,请参阅相关的 GitHub