Docker 引擎 23.0 发行说明
笔记
从 Docker Engine 版本 23.0.0 开始,Buildx 分布在一个单独的包中:
docker-buildx-plugin
。在早期版本中,Buildx 包含在docker-ce-cli
软件包中。当您升级到此版本的 Docker Engine 时,请确保更新所有软件包。例如,在 Ubuntu 上:$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
有关升级 Docker Engine 的更多详细信息,请参阅适用于您的操作系统的Docker Engine 安装说明。
本页面介绍 Docker Engine 版本 23.0 的最新更改、添加内容、已知问题和修复。
欲了解更多信息:
- 已弃用和删除的功能,请参阅 已弃用的引擎功能。
- 引擎 API 的更改,请参阅 引擎 API 版本历史记录。
从 23.0.0 版本开始,Docker Engine 不再使用 CalVer 版本控制,而是开始使用 SemVer 版本控制格式。更改版本格式是实现 Go 模块兼容性的基石,但存储库尚未使用 Go 模块,并且仍然需要使用“+不兼容”版本。在未来版本中,我们将继续努力实现 Go 模块兼容性。
23.0.6
2023-05-08有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
错误修复和增强功能
- 修复 vfs 存储驱动程序在 NFS 上不工作的问题。 莫比/莫比#45465
包装更新
- 升级 转至
1.19.9
. docker/docker-ce-packaging#889 , docker/cli#4254 , moby/moby#45455 - 升级
containerd
到 v1.6.21 - 升级
runc
到 v1.1.7
23.0.5
2023-04-26有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
错误修复和增强功能
- 修剪卷时
添加
--all
/选项。泊坞窗/cli#4229-a
- 添加
--format=json
为docker info
. 泊坞窗/cli#4320 - 使用 AWSLogs 日志驱动程序修复日志丢失。 莫比/莫比#45350
- 修复了 v23.0.4 中引入的回归问题,其中如果提供了fixed-cidr 配置参数但未提供bip,dockerd 将拒绝启动。 莫比/莫比#45403
- 修复守护进程启动moby/moby期间 libnetwork 中的恐慌 #45376
- 修复使用 构建图像时未发送“标签”事件的问题
buildx
。 莫比/莫比#45410
包装更新
- 将 Compose 升级到
2.17.3
. docker/docker-ce-packaging#883
23.0.4
2023-04-17有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
错误修复和增强功能
- 修复 Docker CLI 23.0.0 docker/cli#4141中的性能回归 。
- 修复进度指示器未按
docker cp
预期运行的问题 docker/cli#4157。 docker compose --file
修复docker/cli#4177的 shell 完成。daemon.json
修复moby/moby#45246中因错误处理“default-address-pools”而导致的错误。
包装更新
- 修复 CentOS 9 Stream 丢失的软件包。
- 升级 转至
1.19.8
. docker/docker-ce-packaging#878、 docker/cli#4164、 moby/moby#45277,其中包含 CVE-2023-24537、 CVE-2023-24538、 CVE-2023-24534和 CVE-2023-24536 的修复
23.0.3
2023-04-04笔记
由于 CentOS 9 Stream 的软件包存储库存在问题,CentOS 9 的软件包当前不可用。 CentOS 9 的软件包可能会在稍后添加,或者作为下一个 (23.0.4) 补丁版本的一部分。
错误修复和增强功能
- 修复了一些可能导致 Swarm 加密覆盖网络无法兑现其保证的问题,解决了
CVE-2023-28841、
CVE-2023-28840和
CVE-2023-28842。
- 现在,缺乏对加密覆盖网络的内核支持会报告为错误。
- 加密的覆盖网络是急切建立的,而不是等待多个节点连接。
- 现在可以通过使用
xt_bpf
内核模块在红帽企业 Linux 9 上使用加密的覆盖网络。 - Swarm 覆盖网络的用户应查看 GHSA-vwm3-crmr-xfxw, 以确保不会发生意外暴露。
包装更新
23.0.2
2023-03-28有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
错误修复和增强功能
- 完全解决检测到
apparmor_parser
启用 AppArmor 的内核时缺失的检查问题。 容器/容器#8087, 莫比/莫比#45043 - 确保在生成 BuildKit 构建信息时从 Git URL 中编辑凭据。修复了 CVE-2023-26054。 莫比/莫比#45110
VOLUME
修复由Dockerfile 中的 一行创建的匿名卷被排除在卷修剪之外的问题。莫比/莫比#45159- 修复了在 Swarm 节点上删除卷时无法正确传播错误的问题。 莫比/莫比#45155
COPY --link
通过禁用 mergeop/diffop 优化来 临时解决 BuildKit 中的错误。莫比/莫比#45112- 当父 Swarm 作业被删除时,正确清理子任务。 莫比/swarmkit#3112 , 莫比/莫比#45107
- 修复 Swarm 服务创建逻辑,以便 GenericResource 和非默认网络可以一起使用。 莫比/swarmkit#3082 , 莫比/莫比#45107
- 修复 Swarm CSI 支持,要求 CSI 插件提供暂存端点才能发布卷。 莫比/swarmkit#3116 , 莫比/莫比#45107
- 修复了某些配置中由日志缓冲引起的恐慌。 容器/fifo#47 , moby/moby#45051
- 在调试级别记录 REST 到 Swarm gRPC API 转换层中的错误,以减少冗余和噪音。 莫比/莫比#45016
--dns-opt
修复影响在容器外部创建或--dns-search
在systemd-resolved
容器外部使用的 容器的 DNS 解析问题。莫比/莫比#45000- 修复了在处理源自容器内部的 DNS 查询时记录错误时出现的恐慌。 莫比/莫比#44980
docker ps
通过允许用户选择退出大小计算来提高速度--size=false
。 泊坞窗/cli#4107- 将对 Bash 补全的支持扩展到所有插件。 泊坞窗/cli#4092
- 修复了
docker stack deploy
存在特殊环境变量时 Windows 上的失败问题cmd.exe
。 泊坞窗/cli#4083 - 通过将空图像标签视为与 相同,为未来的 API 版本添加前向兼容性
<none>
。 泊坞窗/cli#4065 - 以原子方式写入上下文文件,以大大降低损坏的可能性,并改善损坏上下文的错误消息。 泊坞窗/cli#4063
包装
- 升级 转至
1.19.7
. docker/docker-ce-packaging#857、 docker/cli#4086、 moby/moby#45137 - 升级
containerd
到v1.6.19
。 莫比/莫比#45084 , 莫比/莫比#45099 - 将 Buildx 升级到
v0.10.4
. docker/docker-ce-packaging#855 - 将 Compose 升级到
v2.17.2
. docker/docker-ce-packaging#867
23.0.1
2023-02-09有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
错误修复和增强功能
- 修复如果内核已启用 AppArmor 但
apparmor_parser
不可用时容器无法启动的问题。 莫比/莫比#44942 - 修复使用内联缓存启用 BuildKit 的构建,导致守护进程崩溃。 莫比/莫比#44944
- 修复 BuildKit 错误地加载以前版本创建的缓存层的问题。 莫比/莫比#44959
ipvlan
修复了升级之前创建的网络会阻止守护进程启动的 问题。莫比/莫比#44937- 修复存储驱动程序在不支持的后备文件系统上初始化时
overlay2
在早期测试中失败的问题。莫比/莫比#44922metacopy
- 修复
exec
退出事件在某些运行时(例如 Kata 容器)下被误解为容器退出的问题。 莫比/莫比#44892 - 改进了在收到由于 API 在请求中挂起而导致的 JSON 响应被截断时 CLI 返回的错误消息。 泊坞窗/cli#4004
runc
修复尝试执行使用 Go 1.20 编译的 目录时出现的错误 CLI 退出代码。泊坞窗/cli#4004- 修复了将大小参数错误处理为
--device-write-bps
路径的问题。 泊坞窗/cli#4004
包装
- 添加
/etc/docker
到 RPM 和 DEB 包装中。 docker/docker-ce-packaging#842- 并非所有用例都会受益;如果你依赖于此,你应该明确地
mkdir -p /etc/docker
。
- 并非所有用例都会受益;如果你依赖于此,你应该明确地
- 将 Compose 升级到
v2.16.0
. docker/docker-ce-packaging#844
23.0.0
2023-02-01有关此版本中拉取请求和更改的完整列表,请参阅相关的 GitHub 里程碑:
新的
- 将 Buildx 和 BuildKit 设置为 Linux 上的默认构建器。
莫比/莫比#43992
- 别名
docker build
为docker buildx build
. 泊坞窗/cli#3314 - 仍然可以通过显式设置来使用旧版构建器
DOCKER_BUILDKIT=0
。 - BuildKit 和旧版构建器处理多阶段构建的方式存在差异。有关更多信息,请参阅 多阶段构建。
- 别名
zstd
添加对拉动压缩层的 支持。莫比/莫比#41759 , 莫比/莫比#42862- 添加对 Linux 上备用 OCI 运行时的支持,与 containerd 运行时 v2 API 兼容。 莫比/莫比#43887 , 莫比/莫比#43993
- 添加对 Windows 上的 containerd
runhcs
shim 的支持(默认情况下关闭)。 莫比/莫比#42089 - 添加
dockerd --validate
以检查守护进程 JSON 配置并退出。 莫比/莫比#42393 - 添加通过标志或 JSON 配置配置守护程序的 HTTP 代理的功能。 莫比/莫比#42835
- 添加对 RFC 3021 点对点网络 (IPv4 /31s) 和单主机 (IPv4 /32s) 的支持。对于具有两个或更少地址的网络,IPAM 不会保留网络和广播地址。 莫比/莫比#42626
- 添加对网络驱动程序中设置
ipvlan_flag
和使用的支持。 莫比/莫比#42542l3s
ipvlan_mode
ipvlan
metacopy
添加对显示存储驱动程序选项值的支持overlay2
。 莫比/莫比#43557- 添加对使用语法描述 Windows 设备的支持
IDType://ID
。 莫比/莫比#43368 - 添加
RootlessKit
、slirp4netns
和VPNKit
版本报告。 莫比/莫比#42330 - 添加对 SwarmKit 集群卷 (CSI) 的实验性支持。
莫比/莫比#41982
- CLI:将集群卷 (CSI) 选项添加到
docker volume
. 泊坞窗/cli#3606 - CLI:将集群卷 (CSI) 支持添加到
docker stack
. 泊坞窗/cli#3662
- CLI:将集群卷 (CSI) 选项添加到
- 添加对 SwarmKit 作业的支持
docker stack deploy
。 泊坞窗/cli#2907 - 添加
docker stack config
命令以输出 .net 使用的合并和内插的配置文件stack deploy
。 泊坞窗/cli#3544 - 添加一个
docker context show
打印当前上下文名称的新命令。 泊坞窗/cli#3567 - 将
--format=json
简写变体添加到--format="{{ json . }}"
支持该标志的所有命令中--format
。 泊坞窗/cli#2936 - 添加一个
--quiet
选项docker create
和docker run
命令以在拉取图像时抑制输出。 泊坞窗/cli#3377 - 向子命令添加一个
--force
选项docker network rm
。即使网络不存在,也会导致 CLI 返回 0 退出代码。对删除网络的服务器端过程没有影响。 泊坞窗/cli#3547 - 添加一个
--signal
选项到docker stop
和docker restart
。 泊坞窗/cli#3614 - 添加一个
-v/--version
标志到docker-proxy
. 莫比/莫比#44703 - 当守护进程在无根模式下运行时,现在可以在众所周知的用户级路径中发现插件。 莫比/莫比#44778
- 该守护程序现在可以优雅地处理 JSON 配置文件中常见的备用 JSON 编码,并报告有用的错误。
莫比/莫比#44777 ,
莫比/莫比#44832
- 接受带有字节顺序标记的 UTF-8。
- 接受带有字节顺序标记的 UTF-16。
- 无效的 UTF-8 会提前报告,并带有易于理解的错误消息。
- 允许使用
STOPSIGNAL
viadocker commit
。 莫比/莫比#43369 - 向日志驱动程序添加一个新选项
awslogs
,以允许跳过 CloudWatch 中的日志流创建。 莫比/莫比#42132 - 向日志驱动程序添加新选项
awslogs
以指定发送到 CloudWatch 的日志格式。 莫比/莫比#42838 - 向日志驱动程序添加一个新选项
fluentd
以设置重新连接间隔。 莫比/莫比#43100 - 将新的选项设置器添加到 Go API 客户端:
WithTLSClientConfigFromEnv()
、WithHostFromEnv()
和WithVersionFromEnv()
。 莫比/莫比#42224 - 通过子命令添加 shell 命令完成的生成
docker completion
。 泊坞窗/cli#3429 - API:
Swarm
向GET /_ping
和添加标头HEAD /_ping
,允许单请求检测 Swarm 支持。 莫比/莫比#42064 - API:添加
signal
参数POST /containers/{id}/stop
和POST /containers/{id}/restart
来设置使用的信号。 莫比/莫比#43206 - API:
CreateMountPoint
向POST /containers/create
. 莫比/莫比#43484 - API:添加
shared-size
参数以GET /images/json
启用图像的共享大小计算。 莫比/莫比#42531 - API:
type
向 中添加一个参数GET /system/df
,以控制计算磁盘使用情况时考虑哪些对象类型。 莫比/莫比#42559 - systemd:使用systemd管理的containerd而不是守护进程管理的containerd。 莫比/莫比#42373
- systemd:
docker.service
在 后启动time-set.target
。 莫比/莫比#43107
已删除
- 删除对从 读取配置的支持
~/.dockercfg
。 泊坞窗/cli#2504- 该位置自 1.7.0 起已被弃用。
- 弃用通知
- 删除
-g
和--graph
daemon 选项以支持--data-root
. 泊坞窗/cli#3739- 自 17.05 起,这些选项已被隐藏并弃用。
- 弃用通知
- 删除客户端结果排序,转而采用搜索 API 返回的顺序。 泊坞窗/cli#3470
- 从 CLI 中删除与已弃用的存储驱动程序相关的警告。警告现在由守护进程处理。 泊坞窗/cli#3542
- 从 中删除
Experimental
客户字段docker version
。 泊坞窗/cli#3543 - 需要明确选择使用已弃用的存储驱动程序,并且在升级时不会自动选择它们。 莫比/莫比#43378
- 删除对不支持的支持文件系统上已弃用的支持
overlay
和存储驱动程序。 莫比/莫比#43472overlay2
d_type
overrideKernelCheck
从存储驱动程序中删除已弃用的选项overlay2
。 moby/moby#44279 弃用通知- 删除对已弃用的 OCI 运行时的支持
io.containerd.runtime.v1.linux
。 莫比/莫比#43695 - 删除 LCOW(Windows 上的 Linux 容器)。
莫比/莫比#42451 ,
莫比/莫比#42499 ,
莫比/莫比#42506 ,
莫比/莫比#42511 ,
莫比/莫比#42520 ,
莫比/莫比#42683 ,
莫比/莫比#42684 ,
莫比/莫比#42685 ,
莫比/莫比#43187
- LCOW 在 17.09 中作为技术预览版引入,并在 20.10 中弃用。
- 弃用通知
- 删除与独立 Swarm 一起使用的传统覆盖网络相关的守护进程选项。
- 从 中删除
--cluster-xx
选项dockerd
。 莫比/莫比#40383 - 删除
host-discovery
网络并使用外部 k/v 存储覆盖网络。 莫比/莫比#42247 - 弃用通知
- 从 中删除
- 删除已弃用的
arm
平台回退。现在,当不可用--platform linux/arm/vY
时将返回错误,而不是拉取错误的图像。莫比/莫比#44414arm/vY
- 从 Go 客户端 API 中
删除已弃用的
SetCustomHTTPHeaders()
、 options-setter。莫比/莫比#42694CustomHTTPHeaders()
WithDialer()
从 Go 客户端 API 中 删除已弃用的选项设置器。莫比/莫比#44022- 代替使用
WithDialContext()
。
- 代替使用
- 删除 的守护进程实现
opts.QuotedString
。实施已转移到 CLI。 莫比/莫比#43250 - 从守护程序中的信任密钥中删除单独的守护程序 ID,并禁用生成信任密钥。 莫比/莫比#43555
- API:
KernelMemory
从POST /containers/create
API 版本 >= 1.42 中删除已弃用的选项。 莫比/莫比#43214
已弃用
- 至少需要 Windows Server RS5 / LTSC 2019(内部版本 17763)才能运行守护程序。 莫比/莫比#43254
BuilderSize
在 API 版本 >= 1.42 上 弃用。莫比/莫比#42608- 弃用
BuildCache.Parent
并支持新引入的BuildCache.Parents
API 版本 >= 1.42。 莫比/莫比#43908 - 弃用
pkg/urlutil
,将实施移至builder/remotecontext/urlutil
. 莫比/莫比#43477
升级
- 升级 转至
1.19.5
. docker/cli#3958 , moby/moby#44794 - 升级
rootlesskit
到v0.14.4
。 莫比/莫比#42708 - 升级
buildkit
到v0.10.6
。 莫比/莫比#43239 - 升级
buildx
到v0.10.2
。 docker/docker-ce-packaging#840 - 升级
swarmkit
到v2.0.0-20230119195359-904c221ac281
。 莫比/莫比#44858 - 升级
containerd
到v1.6.16
。 莫比/莫比#44766 , 莫比/莫比#44769 , 莫比/莫比#44881 - 升级
runc
到v1.1.4
。 莫比/莫比#44039 - 升级
hcsshim
v0.9.6
。 莫比/莫比#44658 - 存储驱动程序
btrfs
现在依赖于 Linux 内核标头 (>= 4.12),而不是来自 btrfs-progs 的标头。 莫比/莫比#44776
安全
- 将容器文件的权限更改
hostconfig.json
为0600
(was0644
)。 莫比/莫比#41620 - 修复
--seccomp-profile
不接受unconfined
并将默认 seccomp 配置文件重命名为builtin
. 莫比/莫比#42481 - 始终使用 seccomp 支持进行构建,并删除
seccomp
构建标签。 莫比/莫比#42501 - 添加 seccomp 支持
riscv64
。 莫比/莫比#43553 - 添加对设置传递到
seccomp(2)
seccomp 配置文件中的标志的支持。 莫比/莫比#42648 - 重构 seccomp 类型以重用运行时规范,并添加对
ErrnoRet
. 莫比/莫比#42005 DefaultErrnoRet
添加对配置文件中的支持seccomp
。 莫比/莫比#42604- 将显式
DefaultErrnoRet
字段添加到默认 seccomp 配置文件,而不更改行为。 莫比/莫比#42649 - 默认 seccomp 配置文件中
socket
的阻止。莫比/莫比#44563AF_VSOCK
- 在默认 seccomp 配置文件中
重新启用
process_vm_readv
和。莫比/莫比#42083process_vm_writev
- 将与 PKU 相关的系统调用添加到默认的 seccomp 配置文件中。 莫比/莫比#43812
- 允许
clock_settime64
与CAP_SYS_TIME
. 莫比/莫比#43775 - 允许
bpf
与CAP_BPF
和perf_event_open
与CAP_PERFMON
. 莫比/莫比#43988 - 显式设置
clone3
系统调用在默认 seccomp 配置文件中返回ENOSYS
,以确保glibc
正确回退到使用clone
. 莫比/莫比#42681
错误修复和增强功能
- 提升
overlay2
为默认存储驱动程序(btrfs
现在zfs
已选择加入)。 莫比/莫比#42661 - 将加载微调器添加到
docker cp
命令中。 泊坞窗/cli#2708 - 弃用该
ElectAuthServer
函数,并使其返回默认注册表而不调用GET /info
API 端点。 泊坞窗/cli#2819 - 回滚 Swarm 服务时进度条不再反转。 泊坞窗/cli#2940
- 用于
net.JoinHostPort()
修复 IPv6 地址的格式。 泊坞窗/cli#2972 - CLI 错误消息现在打印到
stderr
. 泊坞窗/cli#3044 - 如果使用仅使用本地信息的
docker info
自定义,则可以提高性能。--format
通过此更改,CLI 仅在检测到需要来自守护程序的信息时才使用守护程序 API。 泊坞窗/cli#3179 - 从标志中删除默认值
--stop-signal
,因为它可能不反映守护程序使用的实际默认值。 泊坞窗/cli#3245 - 将 Compose 架构添加
3.10
到docker stack
;允许省略该version
字段(导致latest
)。 泊坞窗/cli#3257 - Compose 版本现在
3
相当于. 泊坞窗/cli#34453.x
docker stack
- 修复了
<Ctrl-c>
在非交互模式下运行容器后在 Windows 上挂起以退出的问题。 泊坞窗/cli#3302 run
在-v
/--volume
和-m
/标志中添加命令的相对源路径--mount
。 泊坞窗/cli#3469docker exec -t
现在在创建时立即设置执行进程的控制台大小。 泊坞窗/cli#3627- 更新漂亮的打印格式
docker info
以提供有关已安装插件的更多详细信息。 泊坞窗/cli#3645 - 当上下文被环境覆盖时,
打印
docker context list
和命令的警告消息。泊坞窗/cli#3668docker context use
- 添加
aliases
可用于打印命令的所有可用别名的自定义注释。 泊坞窗/cli#3694 docker context use
CLI 在运行并选择当前上下文 时不再创建或更新 CLI 配置文件。泊坞窗/cli#3721- 运行时现在会忽略不存在的上下文
docker context rm --force
。 泊坞窗/cli#3791 0
添加在 Compose 文件中 覆盖整数的功能。泊坞窗/cli#3812- SIGINT (
<Ctrl-c>
) 现在会传递到正在运行的容器,而不是导致 CLI 退出。 泊坞窗/cli#3849 - 通过在打印前对端口进行排序来改善
docker port CONTAINER
用户体验。 泊坞窗/cli#3892 - API:
GET /containers/{id}/logs
现在使用API 版本 >= 1.42 上的响应标头POST /containers/{id}/attach
报告正在使用哪种原始流格式。莫比/莫比#39812Content-type
- 将 Windows 层的默认沙箱大小设置为 127GB,并确保该
--storage-opts
标志适用于 Windows 上的所有存储。 莫比/莫比#41636 - 从 containerd 配置文件 ( ) 中删除插件部分
/var/run/docker/containerd/containerd.toml
。 莫比/莫比#41675 null
tar 导入期间出现 拒绝。莫比/莫比#41842- 为插件的自定义运行时添加垫片配置。 莫比/莫比#41854
- 现在,当守护进程重新启动时,容器运行状况检查会恢复。 莫比/莫比#41935
- 清理驱动程序时不再禁用配额
btrfs
。 莫比/莫比#42273 - 现在可以将可访问的主机设备安装在
--privileged
无根容器中。 莫比/莫比#42638 **/foo
修复 .中递归通配符目录模式的错误处理.dockerignore
。 莫比/莫比#42676- 扩展
docker import --platform
以允许将导入的图像标记为外部架构。 莫比/莫比#43103 - 现在,在守护进程启动时执行 CPU 实时选项的验证,而不是对每个单独的容器执行验证,从而允许启动提前失败。 莫比/莫比#43131
- 冻结该
namesgenerator
包以防止新添加。用户必须对现有的 25359 个形容词-名称组合感到满意。 莫比/莫比#43210 - API:
containers/{id}/attach/ws
仅适用于API 版本 >= 1.42 上的stdin
、stdout
和参数的流。莫比/莫比#43322stderr
- 修复容器在持续流量下重新启动后容器中的 UDP 流量无法工作的问题。 莫比/莫比#43409
- 添加对具有自定义 amd64 微架构功能级别的拉取映像的支持,最新版本的 Go、GCC、LLVM 和其他编译器工具均支持这种功能级别。 莫比/莫比#43434
- 改进 API 中无效 JSON 请求的验证。 莫比/莫比#43463
exec
减轻慢启动对健康检查的影响。检查超时现在仅适用于运行状况检查命令运行的持续时间。启动命令所需的时间不再计入超时。 莫比/莫比#43480- 控制台
tty
大小在创建时立即设置。 莫比/莫比#43593 , 莫比/莫比#43622 - 修复
overlay2
容器启动失败或守护进程关闭后挂载未被清理的问题。 莫比/莫比#43659 - 将清单列表分辨率与
containerd
. 莫比/莫比#43675 firewalld
当守护进程以无根模式运行时, 跳过用于网络的使用。莫比/莫比#43813- 如果 Windows 上缺少自定义 NAT 网络,现在会在守护程序重新启动后重新创建。 莫比/莫比#43858
- 修复了超时时终止容器运行状况检查过程的问题。 莫比/莫比#43994
- 修复
live-restore
重启策略和卷参考。 莫比/莫比#44237 - API:现在在 API 版本 >= v1.42 上默认仅修剪匿名卷。
all=true
除了匿名卷之外,还 可以通过过滤器来修剪命名卷。莫比/莫比#44259 - API:支持端点并发调用
GET /system/df
。 莫比/莫比#42715 - 提高守护进程在发送 SIGQUIT 时转储堆栈并以代码 2 退出的可靠性。 莫比/莫比#44831
- 提高 Windows 上的可靠性
docker logs -f
,并防止日志驱动程序中丢失换行符local
。 莫比/莫比#43294 - 修复了守护进程中因容器日志缓冲而导致的罕见死锁。 莫比/莫比#44856
- 改进杂项文件系统操作中的错误处理,以便守护进程可以在 Overlayfs 支持文件系统上启动。 莫比/莫比#44834
--ipc=host
修复守护进程在无根模式下运行时未正确处理的 问题。莫比/莫比#44863- 修复了一系列长期存在的问题,其中陈旧的 conntrack 条目导致容器的 UDP 流量路由不正确。 莫比/莫比#44752
- 修复 API 中列出的半注册容器,以及在 API 调用中使用部分注册容器导致的 nil 指针取消引用和恐慌。 莫比/莫比#44633
- 修复创建
DOCKER-USER
ip6tables 链失败的问题。 莫比/莫比#44845 ip6tables
修复了命令不可用 时清理 iptables 规则失败的问题。莫比/莫比#44727- 修复了启用用户态代理后某些 iptables NAT 规则未清除的问题。 莫比/莫比#44811
- 修复在极少数情况下可能泄漏的进程,其中清理启动容器的失败尝试被错误处理。 莫比/莫比#44400
- 修复
CreatedAt
反映初始化而非创建的卷的时间。 莫比/莫比#44725 - 修复了 CLI 在某些命令中错误地报告不兼容的服务器而不是无法访问的服务器的问题。 docker/cli#3901 , docker/cli#3904
- 修复 Zsh 中卷的完成损坏问题。 泊坞窗/cli#2998
docker context
改进存在无效上下文时 的输出。泊坞窗/cli#3847- 当输出不是 TTY 时,删除 CLI 帮助注释的 ANSI 修饰,并添加换行符以提高可读性。 泊坞窗/cli#3973
- 添加
docker container remove
为 的别名docker container rm
。 泊坞窗/cli#3986
已知的问题
apparmor_parser(跟踪问题)
一些 Debian 用户报告升级到 23.0 分支后容器无法启动的问题。该错误消息表明该问题是由于缺少apparmor_parser
二进制文件造成的:
Error response from daemon: AppArmor enabled on system but the docker-default profile could not be loaded: running `apparmor_parser apparmor_parser --version` failed with output:
error: exec: "apparmor_parser": executable file not found in $PATH
Error: failed to start containers: somecontainer
此问题的解决方法是手动安装该apparmor
软件包:
apt-get install apparmor
BuildKit 内联缓存(跟踪问题)
docker build --build-arg BUILDKIT_INLINE_CACHE=1 .
尝试使用 BuildKit 的内联缓存功能(例如, )构建映像docker buildx build --cache-to type=inline .
将导致守护进程意外退出:
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x147ff00]
goroutine 693 [running]:
github.com/docker/docker/vendor/github.com/moby/buildkit/cache.computeBlobChain.func4.1({0x245cca8, 0x4001394960})
/go/src/github.com/docker/docker/vendor/github.com/moby/buildkit/cache/blobs.go:206 +0xc90
github.com/docker/docker/vendor/github.com/moby/buildkit/util/flightcontrol.(*call).run(0x40013c2240)
/go/src/github.com/docker/docker/vendor/github.com/moby/buildkit/util/flightcontrol/flightcontrol.go:121 +0x64
sync.(*Once).doSlow(0x0?, 0x4001328240?)
/usr/local/go/src/sync/once.go:74 +0x100
sync.(*Once).Do(0x4001328240?, 0x0?)
/usr/local/go/src/sync/once.go:65 +0x24
created by github.com/docker/docker/vendor/github.com/moby/buildkit/util/flightcontrol.(*call).wait
如果配置为在此类崩溃后执行此操作(例如通过 systemd),守护进程将重新启动。此版本中唯一可用的缓解措施是避免在启用内联缓存功能的情况下执行构建。
具有热缓存的 BuildKit(跟踪问题)
如果映像是在早期版本的守护程序上使用 BuildKit 构建的,并且是使用 23.0 守护程序构建的,则之前缓存的图层将无法正确恢复。如果 Dockerfile 中没有更改任何行,则图像可能看起来已正确构建;但是,如果由于更改 Dockerfile 中的某些行而导致部分缓存失效,则仍然有效的层和之前缓存的层将无法正确加载。
RUN
在更改 Dockerfile 中的某些行后,这通常表现为应该存在于映像中的文件,而不是存在于某个阶段或引用文件的任何其他阶段中:
[+] Building 0.4s (6/6) FINISHED
=> [internal] load build definition from Dockerfile
=> => transferring dockerfile: 102B
=> [internal] load .dockerignore
=> => transferring context: 2B
=> [internal] load metadata for docker.io/library/node:18-alpine
=> [base 1/2] FROM docker.io/library/node:18-alpine@sha256:bc329c7332cffc30c2d4801e38df03cbfa8dcbae2a7a52a449db104794f168a3
=> CACHED [base 2/2] WORKDIR /app
=> ERROR [stage-1 1/1] RUN uname -a
------
> [stage-1 1/1] RUN uname -a:
#0 0.138 runc run failed: unable to start container process: exec: "/bin/sh": stat /bin/sh: no such file or directory
------
Dockerfile:5
--------------------
3 |
4 | FROM base
5 | >>> RUN uname -a
6 |
--------------------
ERROR: failed to solve: process "/bin/sh -c uname -a" did not complete successfully: exit code: 1
为了缓解这种情况,必须丢弃以前的构建缓存。docker builder prune -a
将完全清空构建缓存,并通过删除处理不当的缓存层来允许受影响的构建再次继续。
ipvlan 网络(跟踪问题)
升级到 23.0 分支时,任何ipvlan网络的存在 都会阻止守护进程启动:
panic: interface conversion: interface {} is nil, not string
goroutine 1 [running]:
github.com/docker/docker/libnetwork/drivers/ipvlan.(*configuration).UnmarshalJSON(0x40011533b0, {0x400069c2d0, 0xef, 0xef})
/go/src/github.com/docker/docker/libnetwork/drivers/ipvlan/ipvlan_store.go:196 +0x414
encoding/json.(*decodeState).object(0x4001153440, {0x5597157640?, 0x40011533b0?, 0x559524115c?})
/usr/local/go/src/encoding/json/decode.go:613 +0x650
encoding/json.(*decodeState).value(0x4001153440, {0x5597157640?, 0x40011533b0?, 0x559524005c?})
/usr/local/go/src/encoding/json/decode.go:374 +0x40
encoding/json.(*decodeState).unmarshal(0x4001153440, {0x5597157640?, 0x40011533b0?})
/usr/local/go/src/encoding/json/decode.go:181 +0x204
encoding/json.Unmarshal({0x400069c2d0, 0xef, 0xef}, {0x5597157640, 0x40011533b0})
/usr/local/go/src/encoding/json/decode.go:108 +0xf4
github.com/docker/docker/libnetwork/drivers/ipvlan.(*configuration).SetValue(0x4000d18050?, {0x400069c2d0?, 0x23?, 0x23?})
/go/src/github.com/docker/docker/libnetwork/drivers/ipvlan/ipvlan_store.go:230 +0x38
为了缓解这种情况,受影响的用户可以降级并删除网络,然后再次升级。或者,可以删除整个网络存储,并在升级后重新创建网络。网络商店位于/var/lib/docker/network/files/local-kv.db
。如果守护程序正在使用备用路径--data-root
,请替换/var/lib/docker
备用路径。
Kata Containers(跟踪问题)
23.0 分支带来了对备用 Containerd 垫片的支持,例如io.containerd.runsc.v1
(gVisor) 和io.containerd.kata.v2
(Kata Containers)。
使用 Kata Containers 运行时时,退出会话exec
会停止正在运行的容器,并在打开 TTY 时挂起连接的 CLI。除了避免执行到 Kata 运行时上运行的容器之外,目前没有其他缓解措施。
此问题的根本原因是 Moby 中长期存在的错误。这将在未来的版本中得到解决。请注意,对备用 OCI 运行时的支持是一项新功能,随着更多用户开始使用此功能,可能会发现类似的问题。