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