Docker Engine 版本 27 版本说明

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

有关以下内容的更多信息:

27.5

Docker Engine 版本 27.5 发布的版本说明。

27.5.1

2025-01-22

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

Bug 修复和增强功能

  • 修复了默认桥接初始化失败后可能持续阻止守护进程启动的问题。 moby/moby#49307
  • 添加了 DOCKER_IGNORE_BR_NETFILTER_ERROR 环境变量。将其设置为 1 允许在无法加载 br_netfilter 的主机上运行。一些功能将无法工作,包括禁用桥接网络中的容器间通信。如果用户空间代理被禁用,将无法在同一网络中的另一个容器访问某个容器已发布的端口。 moby/moby#49306

打包更新

27.5.0

2025-01-13

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

Bug 修复和增强功能

  • containerd 镜像存储:修复通过 tarball 将构建上下文传递给 /build 端点的问题。 moby/moby#49194
  • 没有指定 keepStorage 值的构建器垃圾回收策略现在会按预期继承 defaultKeepStorage 限制。 moby/moby#49137
  • 在守护进程启动期间保留网络标签。 moby/moby#49200
  • 修复删除容器时潜在的竞态条件错误。 moby/moby#49239

Go SDK

  • pkg/sysinfo:弃用 NumCPU。此实用工具的行为与 runtime.NumCPU 相同。 moby/moby#49247
  • pkg/fileutils:弃用 GetTotalUsedFds:此函数仅在内部使用,将在下个版本中移除。 moby/moby#49209
  • pkg/ioutils:弃用 BytesPipe, NewBytesPipe, ErrClosed, WriteCounter, NewWriteCounter, NewReaderErrWrapper, NopFlusher, NopWriter, NopWriteCloser。它们仅在内部使用,将在下个版本中移除。 moby/moby#49246, moby/moby#49255
  • pkg/reexec:此包已弃用并已移至单独的模块。请改用 github.com/moby/sys/reexecmoby/moby#49135

打包更新

27.4

Docker Engine 27.4 版本的发布说明。

27.4.1

2024-12-18

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

Bug 修复和增强功能

  • 修复未配置 OTel 时内存分配过多的问题。 moby/moby#49079
  • 当守护程序启动时,如果 bridge-nf-call-iptablesbridge-nf-call-ip6tables 被禁用,则 docker info 命令和相应的 GET /info API 端点不再包含警告。现在会在需要时尝试加载 br_netfilter 内核模块,这使得这些警告不再准确。 moby/moby#49090
  • 尝试在需要时加载包括 ip6_tablesbr_netfilter 在内的内核模块,使用一种可能在 Docker-in-Docker 容器内成功的方法。 moby/moby#49043
  • 修复一个可能导致 iptables DOCKER FILTER 链在失败时未被清理的错误。 moby/moby#49110

打包更新

27.4.0

2024-12-09

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

API

  • 启用 manifests 选项的 GET /images/json 现在保留了清单索引中清单出现的原始顺序。 moby/moby#48712

Bug 修复和增强功能

  • 使用 jsonfilelocal 日志驱动程序读取日志时,尝试读取或解析底层日志文件时出现的任何错误都将导致跳过文件的其余部分并移动到下一个日志文件(如果存在),而不是向客户端返回错误并关闭流。这些错误可在 Docker 守护程序日志中查看,并在配置了跟踪时导出到跟踪中。 moby/moby#48842
  • 读取日志文件时,现在只在需要时解压压缩的日志文件,而不是在开始日志流之前解压所有文件。 moby/moby#48842
  • 修复了一个问题,该问题导致当内核的 br_netfilter 模块未加载和启用时,在禁用 userland-proxy 的情况下,桥接网络上一个容器发布的端口无法从同一网络上的另一个容器访问。现在,当创建禁用用户空间代理的网络时,守护程序将尝试加载该模块并启用 bridge-nf-call-iptablesbridge-nf-call-ip6tablesmoby/moby#48685
  • 修复了 bridgebr_netfilter 内核模块加载的问题。 moby/moby#48966
  • containerd 镜像存储:修复了当使用 containerd 快照器和大量构建/镜像时,Docker 守护程序因“context deadline exceeded error”而无法完全启动的问题。 moby/moby#48954
  • containerd 镜像存储:修复了部分拉取的镜像未被垃圾回收的问题。 moby#48910, moby/moby#48957
  • containerd 镜像存储:修复了 docker image inspectRepoDigests 中输出重复引用的问题。 moby/moby#48785
  • containerd 镜像存储:修复了在 HTTPS 请求因非 TLS 相关错误而失败时无法连接到某些不安全仓库的问题。 moby/moby#48758
  • containerd 镜像存储:删除了在标记非悬空镜像时出现的令人困惑的警告日志。 moby/moby#49010
  • containerd 镜像存储:在 docker image ls --tree 中不为名称添加下划线。 docker/cli#5519
  • containerd 镜像存储:将 docker image ls --tree 命令中 USED 列的名称更改为 IN USEdocker/cli#5518
  • dockerd-rootless-setuptool.sh install --force 现在忽略 RootlessKit 错误 moby/moby#48695
  • 对于分配给桥接网络所属网桥的地址,禁用 IPv6 重复地址检测 (DAD)。 moby/moby#48684
  • 移除了 BuildKit 初始化超时。 moby/moby#48963
  • 在 ZFS 上删除数据集时忽略“dataset does not exist”错误。 moby/moby#48968
  • 客户端:防止空闲连接泄漏文件描述符 (FDs)。 moby/moby#48764
  • 修复通过 --mount 选项创建的匿名卷未被标记为匿名的问题。 moby/moby#48755
  • 在启用 live-restore 的守护程序重启后,确保 iptables 跳转到 DOCKER-USER 链位于其他规则之前。 moby/moby#48714
  • 修复 OTel meters 可能导致的内存泄漏问题。 moby/moby#48693
  • 为每个镜像存储创建独立的构建历史数据库。 moby/moby#48688
  • 修复在紧密循环中进行 DNS 解析时导致内存使用过多的问题。 moby/moby#48840
  • 修复了在 docker run 期间无法取消镜像拉取的问题。 docker/cli#5654
  • 如果凭据未更改,docker logindocker logout 命令不再更新配置文件。 docker/cli#5569
  • 优化 docker stats 以减少闪烁问题。 docker/cli#5588, docker/cli#5635
  • 修复无法访问的插件路径,导致插件无法被检测到。 docker/cli#5652
  • 在 Cobra 生成的 Shell 补全中添加对 events --filter 的支持。 docker/cli#5614
  • 修复 events --filter daemon= 的 Bash 补全。 docker/cli#5563
  • 改进针对 docker rm 命令的容器 Shell 补全。 docker/cli#5540
  • 添加对 --platform 标志的 Shell 补全支持。 docker/cli#5540
  • 无根模式:通过容器设备接口 (CDI) 集成,使 /etc/cdi/var/run/cdi 可访问。 moby/moby#49027

已移除

  • 弃用 Daemon.Exists()Daemon.IsPaused()。这些函数已不再使用,并且将在下个版本中移除。 moby/moby#48719
  • 弃用 container.ErrNameReservedcontainer.ErrNameNotReservedmoby/moby#48697
  • 弃用 pkg/platform - 此包仅在内部使用,并且将在下个版本中移除。 moby/moby#48863
  • 弃用 RepositoryInfo.Class。此字段已不再使用,并且将在下个版本中移除。 moby/moby#49013
  • Go SDK:修复对 cli/command.ConfigureAuth() 的弃用,该函数自 v27.2.1 版本起已被弃用。 docker/cli#5552
  • Go SDK:弃用 cli.Errors 类型,优先使用 Go 的 errors.Joindocker/cli#5548

打包更新

27.3

Docker Engine 27.3 版本的发布说明。

27.3.1

2024-09-20

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

Bug 修复和增强功能

打包更新

27.3.0

2024-09-19

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

Bug 修复和增强功能

  • containerd 镜像存储:修复 docker image prune -a 命令在处理被通过摘要引用启动的容器使用的镜像时,会取消标记这些镜像的问题。 moby/moby#48488
  • 在守护进程选项中添加 --feature 标志。 moby/moby#48487
  • 更新了对 --gpus=0 标志的处理方式,以与 NVIDIA Container Runtime 保持一致。 moby/moby#48483
  • 支持 WSL2 镜像模式网络中使用接口 loopback0 处理来自 Windows 主机的包。 moby/moby#48514
  • 修复了在使用 --iptables=false--ip6tables=true (默认值) 运行 Docker,且主机防火墙对转发包有 DROP 规则,并且通常未加载 br_netfilter 内核模块时,容器在 IPv4 桥接网络上无法通信的问题。 moby/moby#48511
  • CLI:修复了在没有传入参数/卷时,docker volume update 命令会导致 CLI 崩溃的问题。 docker/cli#5426
  • CLI:修复在 Windows 的 WSL 环境中运行 CLI 时,指标报告不正确的问题。 docker/cli#5432

打包更新

27.2

Docker Engine 27.2 版本的发布说明。

27.2.1

2024-09-09

Bug 修复和增强功能

  • containerd 镜像存储:修复非容器镜像在 docker image ls 输出中被隐藏的问题。 moby/moby#48402
  • containerd 镜像存储:改进当镜像平台不匹配时 docker pull 的错误消息。 moby/moby#48415
  • CLI:修复了导致 docker login 未从传入的注册表地址中移除仓库名的问题,从而导致凭据存储在错误的键下。 docker/cli#5385
  • CLI:修复了在等待用户认证时,如果 CLI 进程被挂起然后恢复,有时会导致浏览器登录流程失败的问题。 docker/cli#5376
  • CLI:如果非交互式调用 docker login 时使用了 --password--password-stdin 但没有使用 --user,现在会返回错误而不是挂起。 docker/cli#5402

打包更新

27.2.0

2024-08-27

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

新增

本版本中的新功能包括

设备码登录

本版本新增了使用设备码登录(device code login)对 Docker Hub 进行身份验证的支持。

您仍然可以使用旧的用户名和密码或访问令牌登录方式,但设备码登录(device code login)更安全,并且无需您在 CLI 中输入密码。

device-code-login
设备码登录

若要使用旧方式,请使用 `docker login -u `。

`docker image ls` 的多平台支持

实验性功能

这是实验性功能,随时可能变更,且不保证向后兼容性。

启用 containerd 镜像存储后,`docker image ls` 命令(或简称 `docker images`)现在支持 `--tree` 标志,该标志会显示镜像是否为多平台镜像。

API

  • `GET /images/json` 响应现在包含 `Manifests` 字段,其中包含镜像索引中包含的子清单(sub-manifests)信息。这包括特定平台的清单和构建证明(build attestations)等信息。

    仅当请求将 `manifests` 查询参数设置为 `true` 时,才会填充此新字段。

    实验性功能

    这是实验性功能,随时可能变更,且不保证向后兼容性。

Bug 修复和增强功能

  • CLI:修复通过 SSH 使用远程上下文时,CLI 在连接远程主机时会分配伪终端(pseudo-TTY),这在极少数情况下会导致问题。 docker/cli#5351
  • 修复了一个问题,该问题阻止了创建 `--ip-range` 结束在 64 位边界上的网络。 moby/moby#48326
  • CLI:`docker ps` 命令在端口绑定中显示的 IPv6 地址现在用方括号括起来。 docker/cli#5365
  • containerd 镜像存储:修复在解包镜像失败时 `docker load` 命令提前退出的错误。 moby/moby#48376
  • containerd 镜像存储:修复 `docker pull` 后之前的镜像未能作为悬空(dangling)镜像保留的问题。 moby/moby#48380

打包更新

已知问题

  • Docker CLI 中通过注册表(registry)进行身份验证(使用 `docker login [registry address]` 命令)时存在一个已知问题:如果提供的注册表地址包含仓库/镜像名称(例如 `docker login index.docker.io/docker/welcome-to-docker`),则仓库部分(`docker/welcome-to-docker`)不会被规范化(normalized),导致凭据存储不正确,从而使得后续从该注册表拉取镜像(例如 `docker pull index.docker.io/docker/welcome-to-docker`)时无法进行身份验证。为避免此问题,在运行 `docker login` 命令时,注册表地址中不要包含任何多余的后缀。

    注意

    在 `docker login` 命令中使用包含 URL 路径段的地址不是文档中说明的使用场景,因此不受支持。建议的使用方式是仅指定注册表主机名,可选择性地指定端口,作为 `docker login` 的地址。

27.1

Docker Engine 27.1 版本的发布说明。

27.1.2

2024-08-13

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

Bug 修复和增强功能

  • 修复了一个回归问题,该问题可能导致在使用大型 Dockerfile 进行构建时出现 `ResourceExhausted desc = grpc: received message larger than max` 错误。 moby/moby#48245
  • CLI:修复 `docker attach` 命令打印不必要的 `context cancelled` 错误消息的问题。 docker/cli#5296
  • CLI:修复 `docker attach` 命令在收到 `SIGINT` 时会直接退出,而不是将信号转发到容器并等待其退出的问题。 docker/cli#5302
  • CLI:修复 `--device-read-bps` 和 `--device-write-bps` 选项不生效的问题。 docker/cli#5339
  • CLI:修复在某些情况下运行插件时发生的 panic 问题。 docker/cli#5337

打包更新

27.1.1

2024-07-23

安全

本版本包含对 CVE-2024-41110 / GHSA-v23v-6jw2-98fq 的修复,该漏洞影响使用 授权插件(AuthZ) 进行访问控制的配置。此版本未包含其他变更,对于不使用 AuthZ 插件的用户而言,此版本与之前版本在其他方面相同。

打包更新

27.1.0

2024-07-22

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

Bug 修复和增强功能

  • rootless:添加 `Requires=dbus.socket` 以防止在使用 systemd 的 cgroup v2 主机上启动守护程序时出现错误。 moby/moby#48141
  • containerd 集成:使用 BuildKit 构建镜像时,现在会正确地发出 `image tag` 事件。 moby/moby#48182
  • CLI:为 `docker image rm`、`docker image history` 和 `docker image inspect` 命令启用 shell 补全。 moby/moby#5261
  • CLI:为各种标志添加和改进 shell 补全 moby/moby#5261
  • CLI:为 docker service createdocker stack 添加 OOMScoreAdj docker/cli#5274
  • CLI:添加对 DOCKER_CUSTOM_HEADERS 环境变量的支持(实验性)docker/cli#5271
  • CLI: containerd 集成:修复在不受支持的 API 版本上,docker push--platform 标志默认设置为 DOCKER_DEFAULT_PLATFORM 环境变量值的问题 docker/cli#5248
  • CLI: 修复:login 提示符上的上下文取消问题 docker/cli#5260
  • CLI: 修复:当向连接到容器的 CLI 发送终止请求时,等待容器退出后再关闭流的问题 docker/cli#5250

已弃用

打包更新

27.0

Docker Engine 27.0 的发布说明。

27.0.3

2024-07-01

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

Bug 修复和增强功能

  • 修复了将主机 IPv6 地址到仅支持 IPv4 的容器的端口映射错误地报告为错误的问题。 moby/moby#48090
  • 修复了创建网络时导致重复子网分配的回归问题。 moby/moby#48089
  • 修复了在支持原生 overlay 和用户命名空间的系统上启用 rootless 模式拉取镜像时导致 fail to register layer: failed to Lchown 错误的问题。 moby/moby#48086

27.0.2

2024-06-27

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

Bug 修复和增强功能

已移除

  • api/types: 弃用 ContainerJSONBase.Node 字段和 ContainerNode 类型。这些定义曾用于独立的(“经典”)Swarm API,但从未在 Docker Engine 本身中实现。 moby/moby#48055

27.0.1

2024-06-24

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

新增

  • containerd 镜像存储:为 docker image push 添加 --platform 标志,并改进当多平台镜像并非所有平台都在本地可用时的默认行为。 docker/cli#4984, moby/moby#47679
  • 在服务的网络中,为 docker stack deploy 添加对 driver_opts 的支持。 docker/cli#5125
  • 在通过带有 docker- 前缀的名称查找用户态代理二进制文件时,考虑额外的 /usr/local/libexec/usr/libexec 路径。 moby/moby#47804

Bug 修复和增强功能

  • *client.Client 实例现在始终可以安全地被多个 goroutine 并发使用。此前,使用 WithAPIVersionNegotiation() 选项时可能导致数据竞争。 moby/moby#47961
  • 修复了导致 Docker CLI 在某些情况下泄露 $TMPDIR 中的 Unix 套接字的错误。 docker/cli#5146
  • --privileged 一起使用时,不再忽略自定义 seccomp 配置文件。 moby/moby#47500
  • rootless: overlay2: 在 Linux 内核版本 5.11 及更高版本中使用 rootless 模式时,支持原生 overlay diff。 moby/moby#47605
  • 修复 healthcheck 的 StartInterval 默认值以反映文档中记载的 5 秒值。 moby/moby#47799
  • 修复了当用户取消操作(例如使用 Ctrl+C)时,docker savedocker load 在守护程序端未终止的问题。 moby/moby#47629
  • 容器的 StartedAt 属性现在在容器启动前记录,保证 StartedAt 始终在 FinishedAt 之前。 moby/moby#47003
  • Windows 上 Windows 容器使用的内部 DNS 解析器现在默认将请求转发到外部 DNS 服务器。这使得 nslookup 能够解析外部主机名。此行为可以通过 daemon.json 中的 "features": { "windows-dns-proxy": false } 进行禁用。此配置选项将在未来的版本中移除。 moby/moby#47826
  • 当 CLI 没有读取配置文件的权限时打印警告。 docker/cli#5077
  • 修复了容器连接时的 goroutine 和文件描述符泄露问题。 moby/moby#45052
  • 在守护程序启动期间清除所有已停止或死亡容器的网络状态。 moby/moby#47984
  • 原子地写入卷选项 JSON,以避免系统崩溃后出现“无效 JSON”错误。 moby/moby#48034
  • 允许多个 macvlan 网络使用相同的父接口。 moby/moby#47318
  • 允许在宣传支持 BuildKit 的 Windows 守护进程上使用 BuildKit。 docker/cli#5178

网络

  • 在容器创建和网络连接期间,允许按接口设置 sysctls。 moby/moby#47686
    • 在未来的版本中,这将是设置每个接口 sysctl 选项的唯一方式。例如,在 docker run 命令的命令行中,--network mynet --sysctl net.ipv4.conf.eth0.log_martians=1 将被拒绝。相反,您必须使用 --network name=mynet,driver-opt=com.docker.network.endpoint.sysctls=net.ipv4.conf.IFNAME.log_martians=1
IPv6
  • ip6tables 不再是实验性功能。如果 IPv6 不被其他任何特性所需要,您可以移除 experimental 配置选项并继续使用 IPv6。
  • 对于 Linux bridge 网络,ip6tables 现在默认启用。 moby/moby#47747
    • 这使得 IPv4 和 IPv6 的行为彼此一致,并降低了启用 IPv6 的容器意外暴露在网络中的风险。
    • 如果您运行的 Docker Engine 已启用 ip6tables(新的默认设置),则没有影响。
    • 如果您使用的是未启用 ip6tables 的 IPv6 bridge 网络,这可能是一个破坏性变更。只有发布的容器端口(-p--publish)才能从 Docker bridge 网络外部访问,并且出站连接会伪装成主机。
    • 要恢复早期版本的行为(完全不使用 ip6tables),请在 daemon.json 中设置 "ip6tables": false,或使用 CLI 选项 --ip6tables=false。另外,您也可以保持 ip6tables 启用,发布端口,并启用直接路由。
    • 在启用 ip6tables 的情况下,如果 ip6tables 在您的主机上无法正常工作,Docker Engine 仍然会启动,但将无法创建启用 IPv6 的网络。
IPv6 网络配置改进
  • 如果未手动配置 default-address-pools 参数,或者该参数不包含任何 IPv6 前缀,则会自动添加一个 Unique Local Address (ULA) 基前缀。 moby/moby#47853
    • 在此版本之前,要创建启用 IPv6 的网络,必须使用 --subnet 选项指定 IPv6 子网,或者在 daemon.json 中将 IPv6 范围添加到 default-address-pools
    • 从此版本开始,当使用 --ipv6 创建 bridge 网络且未通过这些选项定义 IPv6 子网时,将使用 IPv6 Unique Local Address (ULA) 基前缀。
    • ULA 前缀派生自 Engine 主机 ID,以确保其在不同主机和时间上是唯一的。
  • 现在可以将任意大小的 IPv6 地址池添加到 default-address-poolsmoby/moby#47768
  • 现在可以通过在 daemon.json 中使用 "default-network-opts": { "bridge": {"com.docker.network.enable_ipv6": "true"}},或在命令行中使用 dockerd --default-network-opt=bridge=com.docker.network.enable_ipv6=true 来默认启用所有自定义 bridge 网络的 IPv6。 moby/moby#47867
  • 启用 ip6tables 的 IPv6 网络的直接路由。 moby/moby#47871
    • 添加了 bridge 驱动选项 com.docker.network.bridge.gateway_mode_ipv6=<nat|routed>
    • 默认行为 nat 与之前启用 ip6tables 的版本相比没有变化。为每个发布的容器端口设置了 NAT 和伪装规则。
    • 当设置为 routed 时,不会为发布的端口配置 NAT 或伪装规则。如果主机的网络可以将容器地址的数据包路由到主机,这将启用对容器的直接 IPv6 访问。发布的端口将在容器的防火墙中打开。
    • 当端口映射仅适用于 routed 模式时,只允许地址 0.0.0.0::,并且不得指定主机端口。
    • 请注意,在 natrouted 模式下,如果网络中设置了路由,除非 Docker 主机的防火墙有额外的限制,否则发布的容器端口可以从任何远程地址访问。例如:docker network create --ipv6 -o com.docker.network.bridge.gateway_mode_ipv6=routed mynet
    • 选项 com.docker.network.bridge.gateway_mode_ipv4=<nat|routed> 也可用,行为与 IPv6 相同但适用于 IPv4。
  • 如果主机上运行 firewalld,Docker 会创建 docker-forwarding 策略以允许从任何区域转发到 docker 区域。这使得配置具有可路由 IPv6 地址且没有 NAT 或伪装的 bridge 网络成为可能。 moby/moby#47745
  • 当发布端口时未指定主机端口,或指定了主机端口范围,则会为 IPv4 和 IPv6 分配相同的端口。 moby/moby#47871
    • 例如,-p 80 将导致为 0.0.0.0:: 分配相同的临时端口,而 -p 8080-8083:80 将为这两个地址族从范围内选择相同的端口。
    • 同样,发布到特定地址的端口也将分配相同的端口。例如,-p 127.0.0.1::80 -p '[::1]::80'
    • 如果在所有所需地址上都没有可用端口,则容器创建将失败。
  • 环境变量 DOCKER_ALLOW_IPV6_ON_IPV4_INTERFACE,在 26.1.1 版本中引入,不再有任何作用。 moby/moby#47963
    • 如果由于 /proc/sys/net 是只读的而无法在接口上禁用 IPv6,该环境变量曾允许容器继续启动。
    • 在此版本中,如果无法为某个接口禁用 IPv4,只需在创建网络时使用 --ipv6 即可显式启用该网络的 IPv6。其他替代方案是配置操作系统在新接口上默认禁用 IPv6,以读写模式挂载 /proc/sys/net,或使用不支持 IPv6 的内核。
  • 对于启用 IPv6 的 bridge 网络,请勿尝试将 bridge 的内核分配的链路本地地址替换为 fe80::1moby/moby#47787

已移除

  • 弃用实验性 GraphDriver 插件。 moby/moby#48050, docker/cli#5172
  • pkg/archive: 弃用 NewTempArchiveTempArchive。这些类型仅在测试中使用,将在下个版本中移除。 moby/moby#48002
  • pkg/archive: 弃用 CanonicalTarNameForPath moby/moby#48001
  • 弃用 pkg/dmesg。此包已不再使用,将在下个版本中移除。 moby/moby#47999
  • 弃用 pkg/stringid.ValidateIDpkg/stringid.IsShortID moby/moby#47995
  • runconfig: 弃用 SetDefaultNetModeIfBlank 并将 ContainerConfigWrapper 移至 api/types/containermoby/moby#48007
  • runconfig: 弃用 DefaultDaemonNetworkMode 并移至 daemon/networkmoby/moby#48008
  • runconfig: 弃用 opts.ConvertKVStringsToMap。此工具已不再使用,将在下个版本中移除。 moby/moby#48016
  • runconfig: 弃用 IsPreDefinedNetworkmoby/moby#48011

API

  • containerd 镜像存储:POST /images/{name}/push 现在支持 platform 参数(JSON 编码的 OCI Platform 类型),该参数允许从多平台镜像中选择特定的平台清单。这是实验性功能,在未来的 API 版本中可能会发生变化。 moby/moby#47679
  • POST /services/createPOST /services/{id}/update 现在支持 OomScoreAdjmoby/moby#47950
  • ContainerList API 返回容器注解。 moby/moby#47866
  • POST /containers/createPOST /services/create 现在将 Options 作为 HostConfig.Mounts.TmpfsOptions 的一部分,允许为 tmpfs 挂载设置选项。 moby/moby#46809
  • 在使用低于 v1.44 的 API 版本更新 Swarm 服务时,Healthcheck.StartInterval 属性现在已被正确忽略。 moby/moby#47991
  • GET /events 现在支持镜像 create 事件,该事件在新镜像构建完成时触发,无论是否打了标签。 moby/moby#47929
  • GET /info 现在包含一个 Containerd 字段,其中包含有关 containerd API socket 位置以及守护进程用于运行容器和插件的 containerd 命名空间的信息。 moby/moby#47239
  • 弃用镜像检查输出中的非标准(配置)字段。此端点(用于 docker image inspect)返回的 Config 字段包含额外的字段,这些字段不是镜像配置的一部分,也不属于 Docker Image SpecOCI Image Spec。这些字段从未被设置过(并且总是返回该类型的默认值),但如果为空,在响应中也不会被省略。由于这些字段并非旨在成为镜像配置响应的一部分,因此它们已被弃用,并将在未来的 API 版本中移除。
  • 弃用守护进程标志 --api-cors-header 和相应的 daemon.json 配置选项。这些将在下个主要版本中移除。 moby/moby#45313

以下已弃用字段目前包含在 API 响应中,但不属于底层镜像的 Configmoby/moby#47941

  • Hostname
  • Domainname
  • AttachStdin
  • AttachStdout
  • AttachStderr
  • Tty
  • OpenStdin
  • StdinOnce
  • Image
  • NetworkDisabled(未设置时已省略)
  • MacAddress(未设置时已省略)
  • StopTimeout(未设置时已省略)

Go SDK 变更

  • 以下函数的客户端 API 回调现在需要一个 context 参数。 moby/moby#47536
    • client.RequestPrivilegeFunc
    • client.ImageSearchOptions.AcceptPermissionsFunc
    • image.ImportOptions.PrivilegeFunc
  • 移除镜像类型的已弃用别名。 moby/moby#47900
    • ImageImportOptions
    • ImageCreateOptions
    • ImagePullOptions
    • ImagePushOptions
    • ImageListOptions
    • ImageRemoveOptions
  • 引入 Ulimit 类型别名,用于 github.com/docker/go-units.Ulimit。API 中使用的 Ulimit 类型是在一个 Go 模块中定义的,该模块未来将迁移到新的位置。添加类型别名是为了减少类型迁移到新位置带来的不便。此别名确保现有代码继续工作,但其定义未来可能会改变。建议用户使用此别名,而不是直接使用 units.Ulimitmoby/moby#48023

移动并重命名类型,更改其导入路径和导出名称。 moby/moby#47936, moby/moby#47873, moby/moby#47887, moby/moby#47882, moby/moby#47921, moby/moby#48040

  • 将以下类型移动到 api/types/container
    • BlkioStatEntry
    • BlkioStats
    • CPUStats
    • CPUUsage
    • ContainerExecInspect
    • ContainerPathStat
    • ContainerStats
    • ContainersPruneReport
    • CopyToContainerOptions
    • ExecConfig
    • ExecStartCheck
    • MemoryStats
    • NetworkStats
    • PidsStats
    • StatsJSON
    • Stats
    • StorageStats
    • ThrottlingData
  • 将以下类型移动到 api/types/image
    • ImagesPruneReport
    • ImageImportSource
    • ImageLoadResponse
  • ExecStartOptions 类型移动到 api/types/backend
  • VolumesPruneReport 类型移动到 api/types/volume
  • EventsOptions 类型移动到 api/types/events
  • ImageSearchOptions 类型移动到 api/types/registry
  • 移除 Network 前缀,并将以下类型移动到 api/types/network
    • NetworkCreateResponse
    • NetworkConnect
    • NetworkDisconnect
    • NetworkInspectOptions
    • EndpointResource
    • NetworkListOptions
    • NetworkCreateOptions
    • NetworkCreateRequest
    • NetworksPruneReport
  • NetworkResource 移动到 api/types/network

打包更新

27.0.0

由于在 GitHub 上预发布 27.0.0-rc.1 时发生错误,导致创建了 v27.0.0 标签,因此没有 27.0.0 版本发布。不幸的是,该标签已被 Go Module Mirror 抓取,因此无法正常更改 v27.0.0。为了解决此问题,27.0.1 将成为 27.0 系列的第一个版本。

页面选项