Docker Engine 版本 28 发行说明
目录
此页面描述了 Docker Engine 版本 28 的最新更改、新增功能、已知问题和修复。
有关更多信息,请参阅:
- 已弃用和已移除的功能,请参阅已弃用的引擎功能。
- 对引擎 API 的更改,请参阅引擎 API 版本历史。
28.4.0
2025-09-03有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
新增
- 当键值对 (`"GODEBUG":"..."`) 存在于 docker 上下文元数据中时,允许 Docker CLI 设置 `GODEBUG` 环境变量。 docker/cli#6399
错误修复和增强
- 添加 `docker pull` 和 `docker image pull` 的 shell 自动补全功能。 docker/cli#6420
- 修复了 v28.3.3 中的一个回归问题,该问题可能导致客户端未发送 `X-Registry-Auth` 头时 `docker push` 崩溃。 moby/moby#50738
- Windows:潜在地修复了拉取镜像时出现“访问被拒绝”错误的问题。 moby/moby#50871
- containerd 镜像存储:修复了在本地构建的非原生镜像上调用 `docker history` 时,因 `snapshot X does not exist` 而失败的问题。 moby/moby#50875
- containerd 镜像存储:修复了 `docker image prune` 发出正确的 `untag` 和 `delete` 事件,并仅列出已删除镜像的根摘要而不是每个 blob 的问题。 moby/moby#50837
- 在因缺少认证而失败后,从 `docker push` 和 `docker pull` 中移除交互式登录提示。 docker/cli#6256
打包更新
- 将 BuildKit 更新到 v0.24.0。 moby#50888
- 将 Go 运行时更新到 1.24.7。 moby/moby#50889, docker/cli#6422
- 将 `runc` 更新到 v1.3.0。 moby/moby#50699
- 将 containerd(仅静态二进制文件)更新到 v1.7.28。 moby/moby#50700
网络
- 修复了实时恢复时容器重启缓慢的问题。 moby/moby#50829
API
- 更新 `AuthConfig.Email` 字段的弃用消息。 moby/moby#50797
Go SDK
- 弃用已迁移到 github.com/moby/profiles 的 profiles 包。 moby/moby#50513
弃用
- 弃用对命令行标志 `tlscacert`、`tlscert` 和 `tlskey` 的带引号值的特殊处理。 docker/cli#6291
- 将旧版链接环境变量 (`DOCKER_KEEP_DEPRECATED_LEGACY_LINKS_ENV_VARS`) 在 v28.4 中标记为已弃用,并计划在 v30.0 中移除。 docker/cli#6309
- Go-SDK:弃用字段 `NetworkSettingsBase.Bridge`、结构体 `NetworkSettingsBase`、`DefaultNetworkSettings` 的所有字段以及结构体 `DefaultNetworkSettings`。 moby/moby#50839
- Go-SDK:api/types:`build.CacheDiskUsage`、`container.DiskUsage`、`images.DiskUsage` 和 `volumes.DiskUsage` 已弃用,并将在下一个主要版本中移除。 moby/moby#50768
- Go-SDK:cli-plugins/manager:弃用 `ReexecEnvvar`。 docker/cli#6411
- Go-SDK:cli-plugins/manager:弃用注释别名 (`CommandAnnotationPlugin`、`CommandAnnotationPluginVendor`、`CommandAnnotationPluginVersion`、`CommandAnnotationPluginInvalid`、`CommandAnnotationPluginCommandPath`),转而使用 `cli-plugins/manager/metadata` 中的等效项。 docker/cli#6298
- Go-SDK:cli-plugins/manager:弃用元数据别名 (`NamePrefix`、`MetadataSubcommandName`、`HookSubcommandName`、`Metadata`、`ReexecEnvvar`),转而使用 `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:弃用 `NewBuilderCommand` 和 `NewBakeStubCommand`。这些函数将在下一个版本中移除。 docker/cli#6312
- Go-SDK:cli/command/builder:弃用 `NewPruneCommand`。 docker/cli#6343
- Go-SDK:cli/command/checkpoint:弃用 `NewCheckpointCommand`。此函数将在下一个版本中移除。 docker/cli#6312
- Go-SDK:cli/command/checkpoint:弃用 `NewFormat`、`FormatWrite`。 docker/cli#6341
- Go-SDK:cli/command/completion:弃用 `NoComplete`。 docker/cli#6405
- Go-SDK:cli/command/completion:移除已弃用的 `ValidArgsFn`。 docker/cli#6259
- Go-SDK:cli/command/config:弃用 `NewConfigCommand`。此函数将在下一个版本中移除。 docker/cli#6312
- Go-SDK:cli/command/config:弃用 `NewFormat`、`FormatWrite`、`InspectFormatWrite`。 docker/cli#6341
- Go-SDK:cli/command/config:弃用 `RunConfigCreate`、`CreateOptions`、`RunConfigInspect`、`InspectOptions`、`RunConfigList`、`ListOptions`、`RunConfigRemove` 和 `RemoveOptions`。 docker/cli#6369
- Go-SDK:cli/command/container:弃用 `NewBuildCommand`、`NewPullCommand`、`NewPushCommand`、`NewImagesCommand`、`NewImageCommand`、`NewHistoryCommand`、`NewImportCommand`、`NewLoadCommand`、`NewRemoveCommand`、`NewSaveCommand`、`NewTagCommand`、`NewPruneCommand`。这些函数将在下一个版本中移除。 docker/cli#6312
- Go-SDK:cli/command/container:弃用 `NewDiffFormat`、`DiffFormatWrite`。这些函数仅供内部使用,将在下一个版本中移除。 docker/cli#6341
- Go-SDK:cli/command/container:弃用 `NewRunCommand`、`NewExecCommand`、`NewPsCommand`、`NewContainerCommand`、`NewAttachCommand`、`NewCommitCommand`、`NewCopyCommand`、`NewCreateCommand`、`NewDiffCommand`、`NewExportCommand`、`NewKillCommand`、`NewLogsCommand`、`NewPauseCommand`、`NewPortCommand`、`NewRenameCommand`、`NewRestartCommand`、`NewRmCommand`、`NewStartCommand`、`NewStatsCommand`、`NewStopCommand`、`NewTopCommand`、`NewUnpauseCommand`、`NewUpdateCommand`、`NewWaitCommand`、`NewPruneCommand`。这些函数将在下一个版本中移除。 docker/cli#6312
- Go-SDK:cli/command/context:弃用 `NewContextCommand`。此函数将在下一个版本中移除。 docker/cli#6312
- Go-SDK:cli/command/context:弃用 `RunCreate` 和 `CreateOptions`。 docker/cli#6403
- Go-SDK:cli/command/context:弃用 `RunExport` 和 `ExportOptions`。 docker/cli#6403
- Go-SDK:cli/command/context:弃用 `RunImport`。 docker/cli#6403
- Go-SDK:cli/command/context:弃用 `RunRemove` 和 `RemoveOptions`。 docker/cli#6403
- Go-SDK:cli/command/context:弃用 `RunUpdate` 和 `UpdateOptions`。 docker/cli#6403
- Go-SDK:cli/command/context:弃用 `RunUse`。 docker/cli#6403
- Go-SDK:cli/command/image:弃用 `AuthResolver` 工具。 docker/cli#6357
- Go-SDK:cli/command/image:弃用 `NewHistoryFormat`、`HistoryWrite`。 docker/cli#6341, docker/cli#6341
- Go-SDK:cli/command/manifest:弃用 `NewManifestCommand`。此函数将在下一个版本中移除。 docker/cli#6312
- Go-SDK:cli/command/network:弃用 `NewFormat`、`FormatWrite`。 docker/cli#6341
- Go-SDK:cli/command/network:弃用 `NewNetworkCommand`。这些函数将在下一个版本中移除。 docker/cli#6312
- Go-SDK:cli/command/node:弃用 `NewFormat`、`FormatWrite`、`InspectFormatWrite`。 docker/cli#6341
- Go-SDK:cli/command/node:弃用 `NewNodeCommand`。此函数将在下一个版本中移除。 docker/cli#6312
- Go-SDK:cli/command/plugin:弃用 `NewFormat`、`FormatWrite`。 docker/cli#6341
- Go-SDK:cli/command/plugin:弃用 `NewPluginCommand`。此函数将在下一个版本中移除。 docker/cli#6312
- Go-SDK:cli/command/registry:弃用 `NewLoginCommand`、`NewLogoutCommand`、`NewSearchCommand`。这些函数将在下一个版本中移除。 docker/cli#6312
- Go-SDK:cli/command/registry:弃用 `NewSearchFormat`、`SearchWrite`。 docker/cli#6341
- Go-SDK:cli/command/registry:弃用 `OauthLoginEscapeHatchEnvVar` 常量。 docker/cli#6413
- Go-SDK:cli/command/secret:弃用 `NewFormat`、`FormatWrite`、`InspectFormatWrite`。 docker/cli#6341
- Go-SDK:cli/command/secret:弃用 `NewSecretCommand`。此函数将在下一个版本中移除。 docker/cli#6312
- Go-SDK:cli/command/service:弃用 `NewFormat`、`InspectFormatWrite`。 docker/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:弃用 `RunList`、`RunServices`。 docker/cli#6391
- Go-SDK:cli/command/swarm:弃用 `NewSwarmCommand`。此函数将在下一个版本中移除。 docker/cli#6312
- Go-SDK:cli/command/system:弃用 `NewVersionCommand`、`NewInfoCommand`、`NewSystemCommand`、`NewEventsCommand`、`NewInspectCommand`。这些函数将在下一个版本中移除。 docker/cli#6312
- Go-SDK:cli/command/task:弃用 `NewTaskFormat`、`FormatWrite`。 docker/cli#6341
- Go-SDK:cli/command/trust:弃用 `NewTrustCommand`。此函数将在下一个版本中移除。 docker/cli#6312
- Go-SDK:cli/command/trust:弃用 `SignedTagInfo`、`SignerInfo`、`NewTrustTagFormat`、`NewSignerInfoFormat`、`TagWrite`、`SignerInfoWrite`。 docker/cli#6341
- Go-SDK:cli/command/volume:弃用 `NewVolumeCommand`、`NewPruneCommand`。这些函数将在下一个版本中移除。 docker/cli#6312
- Go-SDK:cli/command:移除仅供内部使用的 `AddTrustSigningFlags`、`AddTrustVerificationFlags` 和 `AddPlatformFlag` 工具。 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:弃用 `VisitAll`、`DisableFlagsInUseLine` 工具。这些工具仅供内部使用,将在下一个版本中移除。 docker/cli#6276
- Go-SDK:cli:移除 `HasCompletionArg` 工具。此工具仅供内部使用。 docker/cli#6276
- Go-SDK:弃用 `cli/command.RegistryAuthenticationPrivilegedFunc`。 docker/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:弃用 `NewNamedListOptsRef`、`NewNamedMapOpts`、`NamedListOpts`、`NamedMapOpts` 和 `NamedOption`。这些类型和函数已不再使用,将在下一个版本中移除。 docker/cli#6292
- Go-SDK:opts:弃用 `ParseEnvFile`,转而使用 `kvfile.Parse`。 docker/cli#6381
- Go-SDK:opts:弃用 `QuotedString`。此工具已不再使用,将在下一个版本中移除。 docker/cli#6275
- Go-SDK:opts:弃用 `ValidateHost` 工具。此函数已不再使用,将在下一个版本中移除。 docker/cli#6280
- Go-SDK:pkg/jsonmessage:弃用 `JSONMessage.From`、`JSONMessage.Time` 和 `JSONMessage.TimeNano` 字段,因为 API 不再返回它们用于进度消息。请改用 `events.Message` 类型来解析 `/events` 响应。 moby/moby#50762
- Go-SDK:cli/registry/client 包已弃用,并将在下一个版本中移除。 docker/cli#6313
28.3.3
2025-07-29有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
安全性
此版本修复了一个问题:在 firewalld 重新加载后,已发布的容器端口可以直接从本地网络访问,即使它们旨在仅通过回环地址访问。 CVE-2025-54388 / GHSA-x4rx-4gw3-53p4 / moby/moby#50506。
打包更新
- 将 Buildx 更新到 v0.26.1。 docker/docker-ce-packaging#1230
- 将 Compose 更新到 v2.39.1。 docker/docker-ce-packaging#1234
- 将 Docker Model CLI 插件更新到 v0.1.36。 docker/docker-ce-packaging#1233
28.3.2
2025-07-09有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
错误修复和增强
- 修复了 `—use-api-socket` 在针对远程守护程序时不正确工作的问题。 docker/cli#6157
- 修复了启用调试日志时,会打印多余的“otel error”日志的问题。 docker/cli#6160
- 通过 SSH 连接到远程守护进程时,对 SSH 参数进行引用,以避免意外扩展。 docker/cli#6147
- 在 `docker login` 和 `docker logout` 期间设置 `DOCKER_AUTH_CONFIG` 时发出警告。 docker/cli#6163
打包更新
- 将 Compose 更新到 v2.38.2。 docker/docker-ce-packaging#1225
- 将 Docker Model CLI 插件更新到 v0.1.33。 docker/docker-ce-packaging#1227
- 将 Go 运行时更新到 1.24.5。 moby/moby#50354
28.3.1
2025-07-02有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
打包更新
- 将 BuildKit 更新到 v0.23.2。 moby/moby#50309
- 将 Compose 更新到 v2.38.1。 docker/docker-ce-packaging#1221
- 将模型更新到 v0.1.32,它增加了对 Docker Compose 中新的顶层 `models:` 键的支持。 docker/docker-ce-packaging#1222
28.3.0
2025-06-24有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
新增
- 在 `docker run --gpus` 中增加对 AMD GPU 的支持。 moby/moby#49952
- 使用 `DOCKER_AUTH_CONFIG` 作为凭证存储。 docker/cli#6008
错误修复和增强
- 确保在通过 /containers/{id}/stop API 停止容器时,守护程序数据库中(由 /containers/json API 使用)的容器状态是最新的(在 API 响应之前)。 moby/moby#50136
- 修复了 `docker image inspect inspect` 遗漏空字段的问题。 moby/moby#50135
- 修复了当 containerd 镜像存储被禁用时,`docker images --tree` 未将镜像标记为正在使用的问题。 docker/cli#6140
- 修复了 `docker pull/push` 在需要认证时,因提示登录凭据而在非交互模式下挂起的问题。 docker/cli#6141
- 修复了节点离开 Swarm 时可能存在的资源泄漏问题。 moby/moby#50115
- 修复了 v28.3.3 中的一个回归问题,该问题导致在登录其他注册表时,`docker pull` 的登录提示会显示 Docker Hub 特定的提示。 docker/cli#6135
- 修复了在缩放具有放置偏好的服务后,Swarm 中所有新任务可能永远停留在 PENDING 状态的问题。 moby/moby#50211
- 移除了 Docker 23.0 中意外引入的未文档化、隐藏的顶层 `docker remove` 命令。 docker/cli#6144
- 验证 registry-mirrors 配置作为 `dockerd --validate` 的一部分,并改进了无效镜像的错误消息。 moby/moby#50240
- `dockerd-rootless-setuptool.sh`:修复了当 subuid/subgid 系统要求不满足时,脚本静默返回且不显示错误消息的问题。 moby/moby#50059
- containerd 镜像存储:修复了 `docker push` 未在远程仓库上创建标签的问题。 moby/moby#50199
- containerd 镜像存储:改进了 `docker pull/push` 在令牌服务器返回错误时的处理。 moby/moby#50176
打包更新
- 允许为 OpenRC 自定义 containerd 服务名称。 moby/moby#50156
- 将 BuildKit 更新到 v0.23.1。 moby/moby#50243
- 将 Buildx 更新到 v0.25.0。 docker/docker-ce-packaging#1217
- 将 Compose 更新到 v2.37.2。 docker/docker-ce-packaging#1219
- 将 Docker Model CLI 插件更新到 v0.1.30。 docker/docker-ce-packaging#1218
- 将 Go 运行时更新到 1.24.4。 docker/docker-ce-packaging#1213, moby/moby#50153, docker/cli#6124
网络
- 回滚 28.2.x 版本中添加的 Swarm 相关更改,原因是 https://github.com/moby/moby/issues/50129 中报告的回归问题。 moby/moby#50169
- 回滚:修复了 `docker network inspect --verbose` 有时可能导致守护程序崩溃的问题 (https://github.com/moby/moby/pull/49937)。
- 回滚:修复了在某些情况下,如果 Swarm 缺少入口网络,覆盖网络的负载均衡器 IP 地址不会释放的问题 (https://github.com/moby/moby/pull/49948)。
- 回滚:提高了 NetworkDB 在繁忙集群和丢包网络中的可靠性 (https://github.com/moby/moby/pull/49932)。
- 回滚:NetworkDB 可靠性和收敛速度的改进 (https://github.com/moby/moby/pull/49939)。
- 修复了当某些容器端口映射到 `0.0.0.0` 而其他端口映射到特定主机地址时,可能导致容器启动失败或 UDP 端口映射失败的问题。 moby/moby#50054
- 覆盖网络的 `network inspect` 响应现在报告 `EnableIPv4` 为 true。 moby/moby#50147
- Windows:在主机具有 `"Mirrored"` 类型的网络时,缩短了守护程序的启动时间。 moby/moby#50155
- Windows:确保 `docker system prune` 和 `docker network prune` 仅移除 Docker 创建的网络。 moby/moby#50154
API
- 将 API 版本更新到 1.51。 moby/moby#50145
- `GET /images/json` 现在将所有镜像的 `Containers` 字段值设置为使用该镜像的容器数量。 moby/moby#50146
弃用
- `GET /images/{name}/json` 响应中的空/nil 镜像配置字段现在已弃用,并将在 v29.0 中移除。 docker/cli#6129
- api/types/container:弃用 `ExecOptions.Detach`。此字段未使用,并将在未来版本中移除。 moby/moby#50219
- pkg/idtools:弃用 `IdentityMapping` 和 `Identity.Chown`。 moby/moby#50210
28.2.2
2025-05-30有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
错误修复和增强
- containerd 镜像存储:修复了导致 `docker build --push` 失败的回归问题。这回滚了 修复,该修复解决了 `docker build` 未将覆盖的镜像作为悬空镜像持久化的问题。 moby/moby#50105
网络
- 创建 iptables `DOCKER-USER` 链时,不要添加显式的 `RETURN` 规则,允许用户追加和插入自己的规则。现有规则在升级时不会被删除,但重启后不会被替换。 moby/moby#50098
28.2.1
2025-05-29打包更新
- 修复了 v28.2.0 中的打包回归问题,该问题导致在新安装时创建 `docker` 组/用户失败。 docker-ce-packaging#1209
28.2.0
2025-05-28有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
注意RHEL 包目前不可用,将在稍后发布。
新增
- 将 `{{.Platform}}` 添加为 `docker ps` 的格式化选项,以显示容器运行的镜像平台。 docker/cli#6042
- 使用 `docker run/create` 和 `-v/--volume` 或 `--mount type=bind` 选项时,增加对绑定挂载源上的相对父路径 (`../`) 的支持。 docker/cli#4966
- CDI 现在默认启用。 moby/moby#49963
- 在 `docker info` 中显示发现的 CDI 设备。 docker/cli#6078
- `docker image rm`:添加 `--platform` 选项以从多平台镜像中移除一个变体。 docker/cli#6109
- containerd 镜像存储:BuildKit 初步支持在 Windows 上构建 Windows 容器镜像(需要通过 `DOCKER_BUILDKIT=1` 明确启用)。 moby/moby#49740
错误修复和增强
- 为 fluentd 日志驱动程序添加了一个新的日志选项 (`fluentd-write-timeout`),该选项允许为 fluentd 连接指定写入超时时间。 moby/moby#49911
- 为实验性的 `--use-api-socket` 选项添加了对 `DOCKER_AUTH_CONFIG` 的支持。 docker/cli#6019
- 修复了如果指定了不存在的用户或组,`docker exec` 会等待 10 秒的问题。 moby/moby#49868
- 修复了 `docker swarm init` 忽略 `—external-ca` 的 `cacert` 选项的问题。 docker/cli#5995
- 修复了 CLI 在配置文件 (`~/.docker/config.json`) 是相对符号链接时无法正确保存的问题。 docker/cli#5282
- 修复了具有 `—restart always` 策略的 CDI 设备容器在守护进程重启时启动失败的问题。 moby/moby#49990
- 修复了 shell 自动补全功能只补全某些标志一次的问题,即使它们可以多次设置。 docker/cli#6030
- 修复了 Swarm CSI 驱动程序的 `plugin does not implement PluginAddr interface` 错误。 moby/moby#49961
- 改进了 `docker login` 在无效选项时的错误消息。 docker/cli#6036
- 确保如果 CLI 被强制终止,终端状态会恢复。 docker/cli#6058
- 更新默认的 seccomp 配置文件以匹配 libseccomp v2.6.0。新的系统调用包括:`listmount`、`statmount`、`lsm_get_self_attr`、`lsm_list_modules`、`lsm_set_self_attr`、`mseal`、`uretprobe`、`riscv_hwprobe`、`getxattrat`、`listxattrat`、`removexattrat` 和 `setxattrat`。这可以防止容器在使用它们时收到 EPERM 错误。 moby/moby#50077
- `docker inspect`:添加 shell 自动补全,改进 `—type` 的标志描述,并改进验证。 docker/cli#6052
- containerd 镜像存储:默认启用 BuildKit 垃圾回收器。 moby/moby#49899
- containerd 镜像存储:修复了 `docker build` 未将覆盖的镜像作为悬空镜像持久化的问题。 moby/moby#49702
- containerd 镜像存储:修复了 `docker system df` 报告可回收空间为负数的问题。 moby/moby#49707
- containerd 镜像存储:修复了推送多平台镜像时重复的 `PUT` 请求。 moby/moby#49949
打包更新
- 由于 Ubuntu 20.04 "Focal" 已达到生命周期终止,因此删除了其软件包。 docker/docker-ce-packaging#1200
- 修复了基于 RPM 的 `docker-ce` 手册页的安装位置。 docker/docker-ce-packaging#1203
- 将 BuildKit 更新到 v0.22.0。 moby/moby#50046
- 将 Buildx 更新到 v0.24.0。 docker/docker-ce-packaging#1205
- 将 Compose 更新到 v2.36.2。 docker/docker-ce-packaging#1208
- 将 Go 运行时更新到 1.24.3。 docker/docker-ce-packaging#1192, docker/cli#6060, moby/moby#49174
网络
- 添加桥接网络选项 `“com.docker.network.bridge.trusted_host_interfaces”`,接受以冒号分隔的接口名称列表。这些接口可以直接访问容器 IP 地址上的已发布端口。 moby/moby#49832
- 添加守护程序选项 `“allow-direct-routing”` 以禁用过滤直接发送到容器的来自主机外部的数据包。 moby/moby#49832
- 如果网络创建请求中的 `EnableIPv4` 或 `EnableIPv6` 覆盖了网络选项 `com.docker.network.enable_ipv4` 或 `com.docker.network.enable_ipv6`,则在 inspect 输出中不显示它们。 moby/moby#49866
- 修复了守护程序重启后网络删除可能失败的问题,并显示错误“has active endpoints”列出了空的端点名称。 moby/moby#49901
- 修复了 `docker network inspect --verbose` 有时可能导致守护程序崩溃的问题。 moby/moby#49937
- 修复了在某些情况下,如果 Swarm 缺少入口网络,覆盖网络的负载均衡器 IP 地址不会释放的问题。 moby/moby#49948
- 提高了 NetworkDB 在繁忙集群和丢包网络中的可靠性。 moby/moby#49932
- NetworkDB 可靠性和收敛速度的改进。 moby/moby#49939
API
- `DELETE /images/{name}` 现在支持 `platforms` 查询参数。它接受 JSON 编码的 OCI 平台对象数组,允许选择特定平台以删除内容。 moby/moby#49982
- `GET /info` 现在包含 `DiscoveredDevices` 字段。这是一个 `DeviceInfo` 对象数组,每个对象提供设备驱动程序发现的设备的详细信息。 moby/moby#49980
Go SDK
- `api/types/container`:添加 `ContainerState` 和容器状态常量。 moby/moby#49965
- `api/types/container`:将 `Summary.State` 更改为 `ContainerState`。 moby/moby#49991
- `api/types/container`:为健康状态常量定义 `HealthStatus` 类型。 moby/moby#49876
- `api/types`:弃用已移至 `api/types/build` 的 `BuildResult`、`ImageBuildOptions`、`ImageBuildOutput`、`ImageBuildResponse`、`BuilderVersion`、`BuilderV1` 和 `BuilderBuildKi`。 moby/moby#50025
弃用
- API:已弃用:`GET /images/{name}/json` 不再返回以下字段:`Config`、`Hostname`、`Domainname`、`AttachStdin`、`AttachStdout`、`AttachStderr`、`Tty`、`OpenStdin`、`StdinOnce`、`Image`、`NetworkDisabled`(除非设置,否则已省略)、`MacAddress`(除非设置,否则已省略)、`StopTimeout`(除非设置,否则已省略)。这些额外的字段由于实现细节包含在响应中,但不是镜像配置的一部分,已在 API v1.46 中标记为弃用,现在已省略。 moby/moby#48457
- Go-SDK:弃用 builder/remotecontext.Rel()。此函数在较旧的 Go 版本中需要,但现在可以被 `filepath.Rel()` 替换。 moby/moby#49843
- Go-SDK:api/types:弃用 `BuildCachePruneOptions`,转而使用 `api/types/builder.CachePruneOptions`。 moby/moby#50015
- Go-SDK:api/types:弃用 `BuildCachePruneReport`,转而使用 `api/types/builder.CachePruneReport`。 moby/moby#50015
- Go-SDK:api/types:弃用已移至 `api/types/swarm` 的 `NodeListOptions`、`NodeRemoveOptions`、`ServiceCreateOptions`、`ServiceUpdateOptions`、`RegistryAuthFromSpec`、`RegistryAuthFromPreviousSpec`、`ServiceListOptions`、`ServiceInspectOptions` 和 `SwarmUnlockKeyResponse`。 moby/moby#50027
- Go-SDK:api/types:弃用已移至 api/types/swarm 的 `SecretCreateResponse`、`SecretListOptions`、`ConfigCreateResponse`、`ConfigListOptions`。 moby/moby#50024
- Go-SDK:client:弃用 `IsErrNotFound`。 moby/moby#50012
- Go-SDK:container:弃用 `IsValidHealthString`,转而使用 `api/types/container.ValidateHealthStatus`。 moby/moby#49893
- Go-SDK:container:弃用 `StateStatus`、`WaitCondition` 以及相关的 `WaitConditionNotRunning`、`WaitConditionNextExit` 和 `WaitConditionRemoved` 常量,转而使用 `api/types/container` 中的等效项。 moby/moby#49874
- Go-SDK:opts:弃用 `ListOpts.GetAll`,转而使用 `ListOpts.GetSlice`。 docker/cli#6032
- 从 `docker search` 中移除已弃用的 `IsAutomated` 格式占位符。 docker/cli#6091
- 移除从不符合 OCI 规范的 `docker.pkg.github.com` 注册表拉取镜像的备用方案。 moby/moby#50094
- 移除对拉取旧版 v2、schema 1 镜像的支持,并移除 `DOCKER_ENABLE_DEPRECATED_PULL_SCHEMA_1_IMAGE` 环境变量。 moby/moby#50036, moby/moby#42300
- `GET /info` 响应中的 `BridgeNfIptables` 和 `BridgeNfIp6tables` 字段在 API v1.48 中已弃用,现在在 API v1.50 中已省略。 moby/moby#49904
- errdefs:弃用 `errdefs.FromStatusCode`。请改用 containerd 的 `errhttp.ToNative`。 moby/moby#50030
28.1.1
2025-04-18有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
错误修复和增强
- 修复了 `dockerd-rootless-setuptool.sh` 错误报告缺少 `iptables` 的问题。 moby/moby#49833
- containerd 镜像存储:修复了当使用包含零大小 tar 头的归档文件调用 `docker load` 时可能导致守护进程崩溃的问题。 moby/moby#49837
打包更新
- 将 Buildx 更新到 v0.23.0。 docker/docker-ce-packaging#1185
- 将 Compose 更新到 v2.35.1。 docker/docker-ce-packaging#1188
网络
- 当未找到上游 DNS 服务器时,向容器的 `/etc/resolv.conf` 添加警告。 moby/moby#49827
28.1.0
2025-04-17有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
新增
- 添加 `docker bake` 子命令作为 `docker buildx bake` 的别名。 docker/cli#5947
- 实验性:在 `docker run` 和 `docker create` 上添加了一个新的 `--use-api-socket` 标志,以启用从容器内部访问 Docker socket 并与容器共享主机的凭证。 docker/cli#5858
- `docker image inspect` 现在支持 `--platform` 标志以检查多平台镜像的特定平台。 docker/cli#5934
错误修复和增强
- 添加上下文名称的 CLI shell 自动补全功能。 docker/cli#6016
- 修复了 `docker images --tree` 未将非容器镜像内容大小包含在总镜像内容大小中的问题。 docker/cli#6000
- 修复了 `docker load` 不保留已替换镜像的问题。 moby/moby#49650
- 修复了登录自定义注册表时 `docker login` 的提示。 docker/cli#6015
- 修复了 `docker stats` 在 CPU 核心数高的机器上无法正常工作的问题。 moby/moby#49734
- 修复了与私有仓库交互时导致 `docker pull/push` 失败的回归问题。 docker/cli#5964
- 修复了在没有 `ip_tables` 内核模块的主机上阻止无根 Docker 设置的问题。 moby/moby#49727
- 修复了 firewalld 重新加载后,可能导致不需要的 iptables 规则被恢复且永不删除的问题。 moby/moby#49728
- 改进了 `docker service scale` 的 CLI 自动补全功能。 docker/cli#5968
- `docker images --tree` 现在默认隐藏未标记和悬空的镜像。 docker/cli#5924
- `docker system info` 将在无法建立与 Docker 守护进程的连接时提供退出代码。 docker/cli#5918
- containerd 镜像存储:修复了使用 BuildKit 构建时未发出 `image tag` 事件的问题。 moby/moby#49678
- containerd 镜像存储:改进了 `docker push/pull` 对远程注册表错误的处理。 moby/moby#49770
- containerd 镜像存储:显示非层镜像 blob 的拉取进度。 moby/moby#49746
打包更新
- 添加 Debian "Trixie" 软件包。 docker/docker-ce-packaging#1181
- 添加 Fedora 42 软件包。 docker/containerd-packaging#418, docker/docker-ce-packaging#1169
- 添加 Ubuntu 25.04 "Plucky Puffin" 软件包。 docker/containerd-packaging#419, docker/docker-ce-packaging#1177
- 将 BuildKit 更新到 v0.21.0。 moby/moby#49809
- 将 Compose 更新到 v2.35.0。 docker/docker-ce-packaging#1183
- 将 Go 运行时更新到 1.23.8。 docker/cli#5986, docker/docker-ce-packaging#1180, moby/moby#49737
网络
- 修复了 Swarm 容器上的主机端口映射在 `docker ps` 和 `docker inspect` 中重复的问题。 moby/moby#49724
- 修复了容器网络附加失败并显示错误“Bridge port not forwarding”的问题。 moby/moby#49705
- 修复了从默认桥接网络中移除容器的 `—link` 时出现的问题。 moby/moby#49778
- 改进了网络端点关系的跟踪方式,以减少错误返回“has active endpoints”错误的可能性。 moby/moby#49736
- 改进了“has active endpoints”错误消息,其中包含仍连接到要删除的网络的端点的名称。 moby/moby#49773
API
- 将 API 版本更新到 v1.49。 moby/moby#49718
- `GET /image/{name}/json` 现在支持 `platform` 参数,允许指定要检查的多平台镜像的哪个平台变体。 moby/moby#49586
- `GET /info` 现在返回一个 `FirewallBackend` 字段,其中包含守护程序的防火墙配置信息。 moby/moby#49761
Go SDK
- 将最低 Go 版本要求更新为 go1.23。 docker/cli#5868
- cli/command/context:从 JSON 输出中移除临时 `ContextType` 字段。 docker/cli#5981
- 客户端:尽可能将镜像引用保持为规范格式。 moby/moby#49609
弃用
- API:已弃用:`GET /info` 响应中 `RegistryConfig` 结构中的 `AllowNondistributableArtifactsCIDRs` 和 `AllowNondistributableArtifactsHostnames` 字段在 API v1.49 中已省略。 moby/moby#49749
- API:已弃用:`GET /info` 端点中的 `ContainerdCommit.Expected`、`RuncCommit.Expected` 和 `InitCommit.Expected` 字段在 API v1.48 中已弃用,现在在 API v1.49 中已省略。 moby/moby#48556
- Go-SDK:cli/command/image:弃用 `RunPull`:此函数仅供内部使用,将在下一个版本中移除。 docker/cli#5975
- Go-SDK:cli/config/configfile:弃用 `ConfigFile.Experimental` 字段。自 v20.10 版本以来,实验性 CLI 功能始终启用,此字段已不再使用。可选功能请改用 `ConfigFile.Features`。此字段将在未来版本中移除。 docker/cli#5977
- Go-SDK:弃用已迁移到 `github.com/moby/go-archive` 的 `pkg/archive`。 moby/moby#49743
- Go-SDK:弃用已迁移到 `github.com/moby/sys/atomicwriter` 的 `pkg/atomicwriter`。 moby/moby#49748
- Go-SDK:opts:移除已弃用的 `PortOpt`、`ConfigOpt`、`SecretOpt` 别名。 docker/cli#5953
- Go-SDK:registry:弃用 `APIEndpoint.Official` 字段。 moby/moby#49706
28.0.4
2025-03-25有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
错误修复和增强
- 修复了与私有仓库交互时导致 `docker pull/push` 失败的回归问题。 docker/cli#5964
28.0.3
2025-03-25有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
错误修复和增强
- 修复了容器退出前数据未被消耗时 `docker run` 过早截断 `STDOUT` / `STDERR` 的问题。 docker/cli#5957
打包更新
- 将 BuildKit 更新到 v0.20.2。 moby/moby#49698
- 将 `runc` 更新到 v1.2.6。 moby/moby#49682
- 将 containerd 更新到 v1.7.26。 docker/containerd-packaging#409
28.0.2
2025-03-19有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
错误修复和增强
- 修复了 CLI 特定属性 (`docker.cli.*`) 无意中传递给下游 OTel 服务的问题。 docker/cli#5842
- 修复了用户指定的 `OTEL_RESOURCE_ATTRIBUTES` 被 CLI 的内部遥测属性覆盖的问题。CLI 现在可以正确地将用户指定的属性与内部属性合并,允许两者共存。 docker/cli#5842
- 修复了 Windows 上守护程序在存在 v28.0.0 之前创建的容器时启动失败的问题。 moby/moby#49626
- 修复了 `docker buildx prune` 在使用 `—min-free-space` 时可能出现的错误。 moby/moby#49623
- 修复了在关闭容器时守护程序日志中出现虚假 `io: read/write on closed pipe` 错误。 moby/moby#49590
- 修复了如果 containerd socket 未立即可用,Docker 守护进程会过早失败的问题。 moby/moby#49603
- 默认情况下,在容器的 `/proc` 和 `/sys` 中屏蔽 Linux 热中断信息。 moby/moby#49560
- 更新 `contrib/check-config.sh` 以检查更多与 iptables 相关的内核模块。 moby/moby#49622
- containerd 镜像存储:修复了通过 `—user` 传递的用户 ID 处理中的整数溢出问题。 moby/moby#49652
- containerd 镜像存储:修复了守护进程日志中记录的虚假
reference for unknown type: application/vnd.in-toto+json警告。moby/moby#49652 - containerd 镜像存储:改进了在运行大量容器时
docker ps的性能。moby/moby#49365
打包更新
- 将 BuildKit 更新到 v0.20.1。moby/moby#49587
- 将 Buildx 更新到 v0.22.0。docker/docker-ce-packaging#1175
- 将 Compose 更新到 v2.34.0。docker/docker-ce-packaging#1172
- 将 Go 运行时更新到 1.23.7。docker/cli#5890, docker/docker-ce-packaging#1171, moby/moby#49580
- 将 RootlessKit 更新到 v2.3.4。moby/moby#49614
- 将 containerd(仅静态二进制文件)更新到 v1.7.27。moby/moby#49656
网络
- 添加环境变量
DOCKER_INSECURE_NO_IPTABLES_RAW=1,允许 Docker 在 Linux 内核无法提供CONFIG_IP_NF_RAW支持的系统上运行。启用后,Docker 不会在 iptablesraw表中创建规则。警告:不建议在生产环境中使用此选项,因为它会降低安全性,允许本地网络上的其他主机路由到发布到主机地址的端口,即使它们发布到127.0.0.1。此选项绕过了 Docker Engine 28.0.0 中引入的一些安全强化措施。moby/moby#49621 - 当端点连接到 macvlan 网络驱动程序(父接口已关闭)时,允许容器启动。moby/moby#49630
- 不要跳过源自
gateway_mode=routed网络的 DNAT 数据包。moby/moby#49577 - 修复了导致
docker ps不一致地报告双栈端口映射的错误。moby/moby#49657 - 修复了可能导致
docker-proxy停止向容器转发 UDP 数据报的错误。moby/moby#49649 - 修复了导致
docker-proxy急于关闭到容器的 UDP 连接并导致源地址不必要地更改的错误。moby/moby#49649
Go SDK
- 将
cli-plugins/manager中的各种类型和常量移动到单独的包中。docker/cli#5902 - 将最低要求的 Go 版本更新到 go1.23。moby/moby#49541
cli/command:将PrettyPrint实用程序移动到cli/command/formatter。docker/cli#5916- runconfig/errors:将
ErrConflictHostNetwork拆分为ErrConflictConnectToHostNetwork和ErrConflictDisconnectFromHostNetwork。moby/moby#49605
弃用
- Go-SDK:弃用
cli-plugins/manager.ResourceAttributesEnvvar常量。它在内部使用,但包含OTEL_RESOURCE_ATTRIBUTES名称,该名称是 OpenTelemetry 规范的一部分。此常量的用户应定义自己的。它将在下个版本中移除。docker/cli#5881 - Go-SDK:弃用
opts.PortOpt、opts.ConfigOpt和opts.SecretOpt。这些类型已移至opts/swarmopts包。docker/cli#5907 - Go-SDK:移除
service/logs包。docker/cli#5910 - Go-SDK:
cli/command/image:弃用PushTrustedReference并移至cli/trust。docker/cli#5894 - Go-SDK:
cli/command/image:弃用并内部化TrustedPush。docker/cli#5894 - Go-SDK:
cli/command:弃用Cli.NotaryClient:请改用trust.GetNotaryRepository。此方法不再使用,将在下个版本中移除。docker/cli#5885 - Go-SDK:
cli/command:弃用Cli.RegistryClient。此方法仅在内部使用,将在下个版本中移除。请改用client.NewRegistryClient。docker/cli#5889, docker/cli#5889 - Go-SDK:
registry:弃用RepositoryInfo.Official字段。moby/moby#49567 - Go-SDK:
registry:弃用HostCertsDir:此函数仅在内部使用,将在下个版本中移除。moby/moby#49612 - Go-SDK:
registry:弃用SetCertsDir:现在使用 RootlessKit 运行时会自动选择证书目录,不再需要手动设置。moby/moby#49612
28.0.1
2025-02-26有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
网络
- 移除对内核模块
ip_set、ip_set_hash_net和netfilter_xt_set的依赖。- 该依赖是在 28.0.0 版本中引入的,但被证明过于具有破坏性。使用这些模块的 iptables 规则已被替换。moby/moby#49530
- 允许在禁用 IPv6 的主机上启动守护进程,而无需
--ip6tables=false。moby/moby#49525 - 修复了一个错误,该错误导致具有
--restart=always且已发布端口已被占用的容器在紧密循环中重新启动。moby/moby#49507 - 修复了 Swarm 入口的问题,该问题由 iptables 规则的顺序不正确引起。moby/moby#49538
- 修复了从
--config-only网络创建 swarm 范围网络的错误。moby/moby#49521 - 修复了
docker network inspect在守护进程重新启动之前,为新创建的没有特定 IPAM 配置的网络报告带有 CIDR 后缀的 IPv6 网关的错误。moby/moby#49520 - 改进了当内核模块
ip_set、ip_set_hash_net和netfilter_xt_set不可用时报告的错误。moby/moby#49524 - 将 Docker 的大多数 iptables 规则移出 filter-FORWARD 链,以便其他应用程序可以自由地追加必须遵循 Docker 规则的规则。moby/moby#49518
- 更新
--help输出和 man 页面,以说明哪些选项仅适用于默认桥接网络。moby/moby#49522
错误修复和增强
- 修复了使用
"skip-tls-verify"选项时docker context create始终返回错误的错误。docker/cli#5850 - 修复了 shell 补全建议服务和节点的 ID 而非名称的问题。docker/cli#5848
- 修复了当
docker exec/run返回非零状态时,意外地将退出状态打印到标准错误输出的问题。docker/cli#5854 - 修复了回归错误
protocol "tcp" is not supported by the RootlessKit port driver "slirp4netns"。moby/moby#49514 - containerd 镜像存储:修复了
docker inspect无法显示所有平台缺少层的多平台镜像的问题。moby/moby#49533 - containerd 镜像存储:修复了
docker images --tree报告错误内容大小的问题。moby/moby#49535 - 修复了 i386 上的编译问题 moby/moby#49526
打包更新
- 将
github.com/go-jose/go-jose/v4更新到 v4.0.5 以解决 GHSA-c6gw-w398-hv78 / CVE-2025-27144。docker/cli#5867 - 将 Buildx 更新到 v0.21.1。docker/docker-ce-packaging#1167
- 将 Compose 更新到 v2.33.1。docker/docker-ce-packaging#1168
API
- containerd 镜像存储:修复了
GET /images/json?manifests=1未为仅索引镜像填充Manifests的问题。moby/moby#49533 - containerd 镜像存储:修复了
GET /images/json和/images/<name>/json中的Size.Content字段包含本地不可用内容大小的问题。moby/moby#49535
28.0.0
2025-02-19有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
- docker/cli,28.0.0 里程碑
- moby/moby,28.0.0 里程碑
- 已弃用和删除的功能,请参阅弃用功能。
- Engine API 的更改,请参阅API 版本历史。
新增
- 添加了通过
--mount type=image在容器内挂载镜像的功能。moby/moby#48798- 您还可以指定
--mount type=image,image-subpath=[subpath],...选项来从镜像挂载特定路径。docker/cli#5755
- 您还可以指定
docker images --tree现在显示元数据徽章 docker/cli#5744docker load、docker save和docker history现在支持--platform标志,允许您为多平台镜像上的单平台操作选择特定平台。docker/cli#5331- 将
OOMScoreAdj添加到docker service create和docker stack。docker/cli#5145 docker buildx prune现在支持reserved-space、max-used-space、min-free-space和keep-bytes过滤器。moby/moby#48720- Windows:添加了对将 containerd 作为守护进程的子进程运行的支持,而不是使用系统安装的 containerd。moby/moby#47955
网络
docker-proxy二进制文件已更新,旧版本无法与更新的dockerd一起使用。moby/moby#48132- 关闭了用户态代理 (
docker-proxy) 可以接受 TCP 连接,但在设置iptablesNAT 规则后会失败的窗口。 - 不再使用可执行文件
rootlesskit-docker-proxy,它已从构建和分发中移除。
- 关闭了用户态代理 (
- 从主机的
/etc/resolv.conf读取的 DNS 命名服务器现在始终从主机的网络命名空间访问。moby/moby#48290- 当主机的
/etc/resolv.conf不包含命名服务器且没有--dns覆盖时,除了默认桥接网络和构建容器之外,不再使用 Google 的 DNS 服务器。
- 当主机的
- 桥接和 macvlan 网络中的容器接口现在使用随机生成的 MAC 地址。moby/moby#48808
- 当接口启动时,将发送 Gratuitous ARP / Neighbour Advertisement 消息,以便当 IP 地址被重用时,它们与新生成的 MAC 地址关联。
- 默认桥接网络中的 IPv6 地址现在由 IPAM 分配,而不是从 MAC 地址派生。
- 弃用的 OCI
prestart钩子现在仅由构建容器使用。对于其他容器,网络接口在任务创建完成后添加到网络命名空间,在容器任务启动之前。moby/moby#47406 - 向
docker run、docker container create和docker network connect添加了一个新的gw-priority选项。Engine 将使用此选项来确定哪个网络为容器提供默认网关。在docker run上,此选项仅通过扩展的--network语法可用。docker/cli#5664 - 添加了一个新的网络标签
com.docker.network.endpoint.ifname,用于自定义将容器连接到网络时使用的接口名称。所有 Linux 内置网络驱动程序都支持它。moby/moby#49155- 当使用多个指定网络创建容器时,无法保证网络连接到容器的顺序。因此,如果自定义接口名称使用与自动生成名称相同的前缀(例如
eth),则容器可能无法启动。 - 建议的做法是使用不同的前缀,例如
en0,或足够高的数字后缀以避免冲突,例如eth100。 - 此标签可以通过
docker network connect上的--driver-opt标志指定,例如docker network connect --driver-opt=com.docker.network.endpoint.ifname=foobar …。 - 或者通过
docker run上的长格式--network标志,例如docker run --network=name=bridge,driver-opt=com.docker.network.endpoint.ifname=foobar …
- 当使用多个指定网络创建容器时,无法保证网络连接到容器的顺序。因此,如果自定义接口名称使用与自动生成名称相同的前缀(例如
- 如果自定义网络驱动程序报告能力
GwAllocChecker,那么在创建网络之前,它将收到一个带有网络选项的GwAllocCheckerRequest。自定义驱动程序随后可以回复说不应分配网关 IP 地址。moby/moby#49372
桥接网络中的端口发布
dockerd现在要求 Linux 内核支持ipset。moby/moby#48596- 用于实现端口发布和网络隔离的
iptables和ip6tables规则已进行 extensive 修改。这使得以下一些功能更改成为可能,并且是重构以在未来版本中启用本机nftables支持的第一步。moby/moby#48815 - 如果需要降级到守护进程的早期版本,将需要对新规则进行一些手动清理。最简单和最可靠的方法是重新启动主机,或者使用
iptables -F和ip6tables -F清除filter表中所有现有的iptables规则,然后再启动旧版本的守护进程。如果无法做到这一点,请以 root 身份运行以下命令iptables -D FORWARD -m set --match-set docker-ext-bridges-v4 dst -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT; ip6tables -D FORWARD -m set --match-set docker-ext-bridges-v6 dst -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPTiptables -D FORWARD -m set --match-set docker-ext-bridges-v4 dst -j DOCKER; ip6tables -D FORWARD -m set --match-set docker-ext-bridges-v6 dst -j DOCKER- 如果您以前在 iptables filter-FORWARD 策略设置为
ACCEPT的情况下运行,并且需要恢复对未发布端口的访问,还要从DOCKER链中删除每个桥接网络规则。例如,iptables -D DOCKER ! -i docker0 -o docker0 -j DROP。
- 用于实现端口发布和网络隔离的
- 修复了一个安全问题,该问题允许远程主机直接连接到容器的已发布端口。moby/moby#49325
- 修复了一个安全问题,该问题允许邻近主机连接到映射到环回地址的端口。moby/moby#49325
- 修复了阻止端口发布到链路本地地址的问题。moby/moby#48570
- 容器发布的 UDP 端口现在可以通过主机的公共 IP 地址可靠地被其他网络上的容器访问。moby/moby#48571
- Docker 现在仅在自身(sysctl
net.ipv6.conf.all.forwarding和net.ipv6.conf.default.forwarding)启用 IP 转发时才将ip6tables过滤器表中的FORWARD链策略设置为DROP。这与现有的 IPv4 行为一致。moby/moby#48594- 如果您的主机上启用了 IPv6 转发,但您依赖 Docker 将 ip6tables filter-FORWARD 策略设置为
DROP,您可能需要更新主机的配置以确保其安全。
- 如果您的主机上启用了 IPv6 转发,但您依赖 Docker 将 ip6tables filter-FORWARD 策略设置为
- 现在在
DOCKERiptables 链中阻止了对未使用p/-publish暴露的容器端口的直接路由访问。moby/moby#48724- 如果主机的默认 iptables filter-FORWARD 策略之前保留为
ACCEPT,并且仍然需要从远程主机直接路由访问容器的未发布端口,则选项为:- 发布您需要的端口。
- 使用下面描述的新
gateway_mode_ipv[46]=nat-unprotected。
- 发布到主机地址的容器端口将继续通过这些主机地址进行访问,使用 NAT 或用户态代理。
- 未发布的容器端口仍然可以通过容器的 IP 地址从 Docker 主机直接访问。
- 如果主机的默认 iptables filter-FORWARD 策略之前保留为
- 使用
gateway_mode_ipv[46]=routed创建的网络现在可以从同一 Docker 主机上运行的其他桥接网络以及主机外部访问。moby/moby#48596 - 桥接驱动程序选项
com.docker.network.bridge.gateway_mode_ipv4和com.docker.network.bridge.gateway_mode_ipv6现在接受模式nat-unprotected。moby/moby#48597nat-unprotected类似于默认的nat模式,但没有设置每个端口/协议规则。这意味着容器上的任何端口都可以通过从远程主机直接路由进行访问。
- 桥接驱动程序选项
com.docker.network.bridge.gateway_mode_ipv4和com.docker.network.bridge.gateway_mode_ipv6现在接受模式isolated,当网络也是internal时。moby/moby#49262- 通常,在
internal网络中,会为桥接设备分配一个地址。因此,Docker 主机上的进程可以访问该网络,网络中的容器可以访问在该桥接地址上监听的主机服务(包括监听“任何”主机地址0.0.0.0或::的服务)。 - 使用网关模式
isolated创建的internal桥接网络在 Docker 主机上没有地址。
- 通常,在
- 当端口映射包含由于使用
--gateway_mode_ipv[46]禁用主机 NAT 而无法使用的主机 IP 地址或端口号时,容器创建将不再失败。如果网络连接或断开时网关端点发生变化,可能需要未使用的字段。将记录有关未使用的字段的消息。moby/moby#48575 - 当用户态代理启用时,不要为容器自己的已发布端口创建 iptables nat-POSTROUTING 伪装规则。moby/moby#48854
IPv6
- 添加
docker network create选项--ipv4。要禁用网络的 IPv4 地址分配,请使用docker network create --ipv4=false [...]。docker/cli#5599 - 守护进程选项
--ipv6(daemon.json中的"ipv6": true)现在可以与fixed-cidr-v6一起使用。moby/moby#48319 - IPAM 现在处理大于 "/64" 的子网。moby/moby#49223
- 现在禁用了对分配给桥接网络所属桥接器的地址的重复地址检测 (DAD)。moby/moby#48609
- 修改了
host-gateway,以兼容仅 IPv6 网络。moby/moby#48807- 当在
--add-host选项中使用特殊值host-gateway代替地址时,它会被替换为 Docker 主机上的地址,以便可以通过名称引用主机。使用的地址属于默认桥接器(通常是docker0)。到目前为止,它始终是 IPv4 地址,因为桥接网络上的所有容器都具有 IPv4 地址。 - 现在,如果默认桥接网络上启用了 IPv6,将为 IPv4 和 IPv6 地址创建
/etc/hosts条目。因此,仅连接到仅 IPv6 网络的容器可以通过名称访问主机。 --host-gateway-ip选项覆盖用于替换host-gateway的地址。现在命令行上允许使用其中两个选项,一个用于 IPv4 网关,一个用于 IPv6。- 在
daemon.json文件中,要提供两个地址,请使用"host-gateway-ips"。例如,"host-gateway-ips": ["192.0.2.1", "2001:db8::1111"]。
- 当在
错误修复和增强
- 默认添加 IPv6 环回地址作为不安全注册表。moby/moby#48540
- 添加了对
dockerd的 Cobra 生成的完成脚本的支持。moby/moby#49339 - 修复了当容器通过
systemd在启动时自动启动时 DNS 查询失败的问题。moby/moby#48812 - 修复了 Docker Swarm 模式忽略
volume.subpath的问题。docker/cli#5833 - 修复了
docker export在操作取消后继续导出的问题。moby/moby#49265 - 修复了
docker export在失败后未释放容器可写层的问题。moby/moby#48517 - 修复了当有多个可用名称时
docker images --tree不必要地截断长镜像名称的问题。docker/cli#5757 - 修复了一个错误,该错误导致名称与另一个容器 ID 匹配的容器在守护进程启动时无法恢复。moby/moby#48669
- 修复了
docker ps显示的一些 IPv6 地址未正确用方括号括起来的问题。docker/cli#5468 - 修复了
docker run期间无法取消镜像拉取的问题。docker/cli#5645 - 修复了以 Windows 服务运行时守护进程的错误处理,以防止不干净的退出。moby/moby#48518
- 修复了使用
--attach stdout或--attach stderr与stdin相比,docker run的输出不一致的问题。docker run --attach stdin现在在容器退出时退出。docker/cli#5662 - 修复了使用 NSS 模块支持的
subid进行无根 Docker 设置的问题。moby/moby#49036 - CLI 生成的完成脚本现在在每个命令/标志建议旁边显示描述。docker/cli#5756
docker ps在端口绑定中显示的 IPv6 地址现在用方括号括起来。docker/cli#5363- 实现了 Compose 的端口验证方法。docker/cli#5524
- 改进了命令行上无效标志的错误输出。docker/cli#5233
- 改进了使用另一个容器的网络命名空间启动容器失败时的错误处理。moby/moby#49367
- 改进了无效 API 错误的处理,这可能导致显示空错误消息。moby/moby#49373
- 改进了未知(子)命令和无效参数的输出和一致性。docker/cli#5234
- 改进了守护进程配置中
exec-opts的验证。moby/moby#48979 - 更新了
--gpus=0标志的处理,使其与 NVIDIA Container Runtime 保持一致。moby/moby#48482 client.ContainerCreate现在将HostConfig中的CapAdd和CapDrop字段规范化为它们的规范形式。moby/moby#48551docker image save现在生成稳定的时间戳。moby/moby#48611docker inspect现在允许您检查 Swarm 配置。docker/cli#5573- containerd 镜像存储:添加了对
docker pull中Extracting层状态的支持。moby/moby#49064 - containerd 镜像存储:修复了
commit、import和build未将替换的镜像保留为悬空镜像的问题。moby/moby#48316 - containerd 镜像存储:使
docker load --platform在请求的平台未加载时返回错误。moby/moby#48718 - 修复了
--link选项的验证。docker/cli#5739 - 添加了网络诊断端口守护进程配置选项的验证。moby/moby#49305
- 除非明确配置,否则在不需要网关的情况下不再为网关保留 IP 地址。具体来说,具有选项
com.docker.network.bridge.inhibit_ipv4的“内部”桥接网络,没有父接口的ipvlan或macvlan网络,以及 L3 IPvlan 模式。moby/moby#49261 - 如果自定义网络驱动程序报告能力
GwAllocChecker,那么在创建网络之前,它将收到一个带有网络选项的GwAllocCheckerRequest。自定义驱动程序随后可以回复说不应分配网关 IP 地址。moby/moby#49372 - 修复了容器无法同时连接到 L3 IPvlan 和其他网络类型的问题。moby/moby#49130
- 当容器从网络断开连接时,删除正确的
/etc/hosts条目。moby/moby#48857 - 修复了重复的网络断开事件。moby/moby#48800
- 解决了更改
docker0的fixed-cidr以及从用户管理的默认桥接器 (--bridge) 推断配置的问题。moby/moby#48319 - 删除了在 26.1.0 版本中引入的用于控制从 Windows 容器转发到外部 DNS 解析器的功能标志
windows-dns-proxy,以使nslookup工作。它在 27.0.0 版本中默认启用。moby/moby#48738 - 删除了用于 SCTP 校验和的
iptablesmangle 规则。可以通过在守护进程的环境中设置DOCKER_IPTABLES_SCTP_CHECKSUM=1来重新启用该规则。此覆盖将在未来版本中移除。moby/moby#48149 - 在大多数情况下,连接到桥接网络的速度更快。moby/moby#49302
打包更新
- 将 Go 运行时更新到 1.23.6。docker/cli#5795, moby/moby#49393, docker/docker-ce-packaging#1161
- 将
runc更新到 v1.2.5(仅静态二进制文件)。moby/moby#49464 - 将 containerd 更新到 v1.7.25。moby/moby#49252
- 将 BuildKit 更新到 v0.20.0。moby/moby#49495
- 将 Buildx 更新到 v0.21.0。docker/docker-ce-packaging#1166
- 将 Compose 更新到 v2.32.4。docker/docker-ce-packaging#1143
dockerd(8)man 页的规范来源已移回moby/moby存储库本身。moby/moby#48298
Go SDK
- 改进了空对象 ID 的验证。现在,当尝试使用空 ID 或名称时,客户端会返回“Invalid Parameter”错误。这将某些“Inspect”函数返回的错误从“Not found”错误更改为“Invalid Parameter”。moby/moby#49381
Client.ImageBuild()现在从 API 请求的查询字符串中省略默认值。moby/moby#48651api/types/container:合并Stats和StatsResponse。moby/moby#49287client.WithVersion:设置 API 版本时剥离 v 前缀。moby/moby#49352client:添加WithTraceOptions,允许指定自定义 OTe1 跟踪选项。moby/moby#49415client:添加HijackDialer接口。moby/moby#49388client:添加SwarmManagementAPIClient接口,用于描述所有与 Swarm 特定对象相关的 API 客户端方法。moby/moby#49388client:添加WithTraceOptions,允许指定自定义 OTel 跟踪选项。moby/moby#49415client:ImageHistory、ImageLoad和ImageSave现在使用可变功能选项。moby/moby#49466pkg/containerfs:移至内部。moby/moby#48097pkg/reexec:现在可以在 Linux、Windows、macOS 和 FreeBSD 以外的平台上使用。moby/moby#49118api/types/container:引入CommitResponse类型。这目前是IDResponse的别名,但在未来版本中可能会成为一个不同的类型。moby/moby#49444api/types/container:引入ExecCreateResponse类型。这目前是IDResponse的别名,但在未来版本中可能会成为一个不同的类型。moby/moby#49444
API
- 将 API 版本更新到 v1.48。moby/moby#48476
GET /images/{name}/json响应现在返回Manifests字段,其中包含镜像索引中包含的子清单信息。这包括平台特定清单和构建证明。moby/moby#48264POST /containers/create现在支持类型为image的Mount,用于在容器内挂载镜像。moby/moby#48798GET /images/{name}/history现在支持platform参数(JSON 编码的 OCI Platform 类型),允许您指定要显示历史记录的平台。moby/moby#48295POST /images/{name}/load和GET /images/{name}/get现在支持platform参数(JSON 编码的 OCI Platform 类型),允许您指定要加载/保存的平台。不传递此参数将导致加载/保存完整的跨平台镜像。moby/moby#48295- 改进了容器调整大小和执行调整大小上无效宽度/高度的错误。moby/moby#48679
POST /containers/create端点现在在响应中包含警告,当设置容器范围的VolumeDriver选项并结合通过Mounts定义的卷时,因为VolumeDriver选项对这些卷没有影响。此警告以前由 CLI 生成。moby/moby#48789- containerd 镜像存储:
GET /images/json和GET /images/{name}/json响应现在包含Descriptor字段,其中包含镜像目标的 OCI 描述符。新字段仅在守护进程提供多平台镜像存储时填充。moby/moby#48894 - containerd 镜像存储:
GET /containers/{name}/json现在返回一个ImageManifestDescriptor字段,其中包含用于创建容器的镜像的平台特定镜像清单的 OCI 描述符。moby/moby#48855 - 现在,调试端点(
GET /debug/vars、GET /debug/pprof/、GET /debug/pprof/cmdline、GET /debug/pprof/profile、GET /debug/pprof/symbol、GET /debug/pprof/trace、GET /debug/pprof/{name})也可以通过版本化 API 路径(/v<API-version>/<endpoint>)访问。moby/moby#49051 - 修复了 API 为验证错误返回
500状态码而不是400状态码的问题。moby/moby#49217 - 修复了归档端点
HEAD /containers/{name:.*}/archive、GET /containers/{name:.*}/archive、PUT /containers/{name:.*}/archive返回500状态而不是400状态码的问题。moby/moby#49219 POST /containers/create现在接受HostConfig.SecurityOpt中的writable-cgroups=true选项,以可写方式挂载容器的 cgroups。这提供了比HostConfig.Privileged更精细的方法。moby/moby#48828POST /build/prune将keep-bytes重命名为reserved-space,现在支持额外的修剪参数max-used-space和min-free-space。moby/moby#48720POST /networks/create现在有一个EnableIPv4字段。将其设置为false将禁用网络的 IPv4 IPAM。moby/moby#48271GET /networks/{id}现在返回一个EnableIPv4字段,显示网络是否启用了 IPv4 IPAM。moby/moby#48271- 用户定义的桥接网络需要启用 IPv4 或 IPv6 地址分配。对于默认桥接网络 (
docker0) 无法禁用 IPv4。moby/moby#48323 macvlan和ipvlan网络可以创建时禁用 IPv4、IPv6 或两种地址族的地址分配。moby/moby#48299- Windows 或 Swarm 网络不能禁用 IPv4。moby/moby#48278
- 添加了一种方法来指定哪个网络应该为容器提供默认网关。moby/moby#48936
POST /networks/{id}/connect和POST /containers/create现在接受EndpointsConfig中的GwPriority字段。此值用于确定哪个网络端点为容器提供默认网关。选择优先级最高的端点。如果多个端点具有相同的优先级,则端点按其网络名称按字母顺序排序,并选择排序靠前的端点。moby/moby#48746GET /containers/json现在为每个网络端点返回NetworkSettings中的GwPriority字段。GwPriority字段由 CLI 的新docker run和docker network connect的gw-priority选项使用。moby/moby#48746
--sysctl选项中eth0的设置不再自动迁移到网络端点。moby/moby#48746- 例如,在 Docker CLI 中,
docker run --network mynet --sysctl net.ipv4.conf.eth0.log_martians=1 ...被拒绝。相反,您必须使用docker run --network name=mynet,driver-opt=com.docker.network.endpoint.sysctls=net.ipv4.conf.IFNAME.log_martians=1 ...
- 例如,在 Docker CLI 中,
GET /containers/json现在返回一个ImageManifestDescriptor字段,该字段与/containers/{name}/json中的同名字段匹配。此字段仅在守护进程提供多平台镜像存储时填充。moby/moby#49407
已移除
- Fluent 记录器选项
fluentd-async-connect已在 v20.10 中弃用,现已移除。moby/moby#46114 docker stop和docker restart上的--time选项已弃用并重命名为--timeout。docker/cli#5485- Go-SDK:
pkg/ioutils:移除NewReaderErrWrapper,因为它从未被使用过。moby/moby#49258 - Go-SDK:
pkg/ioutils:移除已弃用的BytesPipe、NewBytesPipe、ErrClosed、WriteCounter、NewWriteCounter、NewReaderErrWrapper、NopFlusher。moby/moby#49245 - Go-SDK:
pkg/ioutils:移除已弃用的NopWriter和NopWriteCloser。moby/moby#49256 - Go-SDK:
pkg/sysinfo:移除已弃用的 NumCPU。moby/moby#49242 - Go-SDK:移除
pkg/broadcaster,因为它仅在内部使用。moby/moby#49172 - Go-SDK:移除已弃用的
cli.Errors类型。docker/cli#5549 - 移除
pkg/ioutils.ReadCloserWrapper,因为它仅在测试中使用。moby/moby#49237 - 移除已弃用的
api-cors-header配置参数和dockerd--api-cors-header选项。moby/moby#48209 - 移除已弃用的
APIEndpoint.Version字段、APIVersion类型以及APIVersion1和APIVersion2常量。moby/moby#49004 - 移除已弃用的
api-cors-header配置参数和 Docker 守护进程的--api-cors-header选项。docker/cli#5437 - 移除已弃用的
pkg/directory包。moby/moby#48779 - 移除已弃用的
pkg/dmsg.Dmesg()。moby/moby#48109 - 移除已弃用的 image/spec 包,该包已移至单独的模块 (
github.com/moby/docker-image-spec)。moby/moby#48460 - 移除已弃用的
logentries日志驱动程序的迁移代码和错误。moby/moby#48891 - 移除对已弃用的外部图形驱动程序插件的支持。moby/moby#48072
api/types:移除已弃用的container.ContainerNode和ContainerJSONBase.Node字段。moby/moby#48107api/types:移除已弃用的别名:ImagesPruneReport、VolumesPruneReport、NetworkCreateRequest、NetworkCreate、NetworkListOptions、NetworkCreateResponse、NetworkInspectOptions、NetworkConnect、NetworkDisconnect、EndpointResource、NetworkResource、NetworksPruneReport、ExecConfig、ExecStartCheck、ContainerExecInspect、ContainersPruneReport、ContainerPathStat、CopyToContainerOptions、ContainerStats、ImageSearchOptions、ImageImportSource、ImageLoadResponse、ContainerNode。moby/moby#48107libnetwork/iptables:移除已弃用的IPV、Iptables、IP6Tables和Passthrough()。moby/moby#49121pkg/archive:移除已弃用的CanonicalTarNameForPath、NewTempArchive、TempArchive。moby/moby#48708pkg/fileutils:移除已弃用的GetTotalUsedFds。moby/moby#49210pkg/ioutils:移除OnEOFReader,因为它仅在内部使用。moby/moby#49170pkg/longpath:移除已弃用的Prefix常量。moby/moby#48779pkg/stringid:移除已弃用的IsShortID和ValidateID函数。moby/moby#48705runconfig/opts:移除已弃用的ConvertKVStringsToMap。moby/moby#48102runconfig:移除已弃用的ContainerConfigWrapper、SetDefaultNetModeIfBlank、DefaultDaemonNetworkMode、IsPreDefinedNetwork。moby/moby#48102container:移除已弃用的ErrNameReserved、ErrNameNotReserved。moby/moby#48728- 移除
Daemon.ContainerInspectCurrent()方法,并将Daemon.ContainerInspect()签名更改为接受backend.ContainerInspectOptions结构。moby/moby#48672 - 移除已弃用的
Daemon.Exists()和Daemon.IsPaused()方法。moby/moby#48723
弃用
- API:
GET /info响应中的BridgeNfIptables和BridgeNfIp6tables字段现在始终为false,并将在 API v1.49 中省略。netfilter 模块现在按需加载,不再在守护进程启动期间加载,这使得这些字段过时。moby/moby#49114 - API:用于返回 JSON 进度响应(例如
POST /images/create、POST /images/{name}/push和POST /build)的流式响应中的error和progress字段已弃用。moby/moby#49447- 用户应改用
errorDetail和progressDetail字段中的信息。 - 这些字段分别在 API v1.4(docker v0.6.0)和 API v1.8(docker v0.7.1)中被标记为弃用,但仍然返回。
- 这些字段将在未来的 API 版本中留空或省略。
- 用户应改用
- 弃用
Daemon.Register()。此函数未使用,将在下个版本中移除。moby/moby#48702 - 弃用
client.ImageInspectWithRaw函数,转而使用新的client.ImageInspect。moby/moby#48264 - 弃用
daemon/config.Config.ValidatePlatformConfig()。此方法曾用作config.Validate的辅助函数,应改用config.Validate。moby/moby#48985 - 弃用
pkg/reexec。此包已弃用并移至单独的模块。请改用github.com/moby/sys/reexec。moby/moby#49129 - 弃用推送不可分发工件的配置。docker/cli#5724
- 弃用
--allow-nondistributable-artifacts守护进程标志和daemon.json中对应的allow-nondistributable-artifacts字段。设置任何一个选项将不再生效,但会添加弃用警告日志。moby/moby#49065 - 弃用
GET /infoAPI 响应中的RegistryConfig.AllowNondistributableArtifactsCIDRs和RegistryConfig.AllowNondistributableArtifactsHostnames字段。对于 API 版本 v1.48 及更早版本,这些字段仍包含在响应中,但始终为null。在 API 版本 v1.49 及更高版本中,该字段将完全省略。moby/moby#49065 - Go-SDK:弃用
registry.ServiceOptions.AllowNondistributableArtifacts字段。moby/moby#49065 - Go-SDK:
api/types/system.Info中的BridgeNfIptables、BridgeNfIp6tables字段以及pkg/sysinfo.SysInfo中的BridgeNFCallIPTablesDisabled、BridgeNFCallIP6TablesDisabled字段已弃用,将在下个版本中移除。moby/moby#49114 - Go-SDK:
client:弃用CommonAPIClient接口,转而使用APIClient接口。CommonAPIClient将在下个版本中更改为APIClient的别名,并在之后的版本中移除。moby/moby#49388 - Go-SDK:
client:弃用ErrorConnectionFailed辅助函数。此函数仅在内部使用,将在下个版本中移除。moby/moby#49389 - Go-SDK:
pkg/ioutils:弃用NewAtomicFileWriter、AtomicWriteFile、AtomicWriteSet、NewAtomicWriteSet,转而使用pkg/atomicwriter等效项。moby/moby#49171 - Go-SDK:
pkg/sysinfo:弃用NumCPU。此实用程序与runtime.NumCPU行为相同。moby/moby#49241 - Go-SDK:
pkg/system:弃用MkdirAll。此函数提供了 Windows GUID 卷路径的自定义处理。Go 1.22 及更高版本现在支持对此类路径的处理,此函数现在是os.MkdirAll的别名,应改用os.MkdirAll。此别名将在下个版本中移除。moby/moby#49162 - Go-SDK:弃用
pkg/parsers.ParseKeyValueOpt。moby/moby#49177 - Go-SDK:弃用
pkg/parsers.ParseUintListMaximum、pkg/parsers.ParseUintList。这些实用程序仅在内部使用,将在下个版本中移除。moby/moby#49222 - Go-SDK:弃用
api/type.IDResponse,转而使用container.CommitResponse和container.ExecCreateResponse,它们目前是别名,但在未来版本中可能会成为不同的类型。此类型将在下个版本中移除。moby/moby#49446 - Go-SDK:弃用
api/types/container.ContainerUpdateOKBody,转而使用UpdateResponse。此类型将在下个版本中移除。moby/moby#49442 - Go-SDK:弃用
api/types/container.ContainerTopOKBody,转而使用TopResponse。此类型将在下个版本中移除。moby/moby#49442 - Go-SDK:
pkg/jsonmessage:修复了ProgressMessage、ErrorMessage的弃用问题,它们分别在 Docker v0.6.0 和 v0.7.1 中弃用。moby/moby#49447 - 将
GraphDriverData从api/types移动到api/types/storage。旧类型已弃用,将在下个版本中移除。moby/moby#48108 - 将
RequestPrivilegeFunc从api/types移动到api/types/registry。旧类型已弃用,将在下个版本中移除。moby/moby#48119 - 从
api/types移动到api/types/container-NetworkSettings、NetworkSettingsBase、DefaultNetworkSettings、SummaryNetworkSettings、Health、HealthcheckResult、NoHealthcheck、Starting、Healthy和Unhealthy常量、MountPoint、Port、ContainerState、Container、ContainerJSONBase、ContainerJSON、ContainerNode。旧类型已弃用,将在下个版本中移除。moby/moby#48108 - 从
api/types移动到api/types/image-ImageInspect、RootFS。旧类型已弃用,将在下个版本中移除。moby/moby#48108 GET /info端点中的ContainerdCommit.Expected、RuncCommit.Expected和InitCommit.Expected字段已弃用,并将在 API v1.49 中省略。moby/moby#48478api/types/registry:弃用ServiceConfig.AllowNondistributableArtifactsCIDRs和ServiceConfig.AllowNondistributableArtifactsHostnames字段。这些字段将在下个版本中移除。moby/moby#49065api/types/system/Commit.Expected字段已弃用,不应再使用。moby/moby#48478daemon/graphdriver:弃用GetDriver()。moby/moby#48079libnetwork/iptables:弃用Passthrough。此函数仅在内部使用,将在下个版本中移除。moby/moby#49115pkg/directory.Size()函数已弃用,并将在下个版本中移除。moby/moby#48057registry:弃用APIEndpoint.TrimHostName;远程名称的主机名现在无条件修剪。此字段将在下个版本中移除。moby/moby#49005daemon.json中的allow-nondistributable-artifacts字段。设置任何一个选项将不再生效,但会添加弃用警告日志以提高对弃用的认识。此警告计划在下个版本中成为错误。moby/moby#49065