已弃用的 Docker Engine 功能
此页面概述了 Engine 中已弃用的功能。不包括打包更改和受支持的(Linux)发行版。要了解 Linux 发行版的停止支持信息,请参阅 发布说明。
功能弃用策略
随着 Docker 的更新,有时可能需要移除现有功能或用新功能替换它们。在移除现有功能之前,它会在文档中标记为“已弃用”,并在至少一个稳定版本中保留在 Docker 中,除非另有明确说明。在此之后,该功能可能会被移除。
用户应注意每个版本中已弃用功能的列表,并尽快规划从这些功能迁移(如果适用),转向替代功能。
已弃用的引擎功能
下表概述了已弃用功能的当前状态:
已弃用:该功能被标记为“已弃用”,不应再使用。
该功能可能在未来的版本中被移除、禁用或改变行为。 “已弃用”列包含标记为已弃用的版本,而“移除”列则包含计划移除该功能的暂定版本。如果“移除”列中未包含任何版本号,则表示具体移除时间尚未确定。
已移除:该功能已被移除、禁用或隐藏。
请参阅相关章节以获取详细信息。某些功能已被“软”弃用, 这意味着为了向后兼容性,这些功能仍然可用,以便 用户迁移到替代方案。在这种情况下,可能会显示警告信息,用户不应依赖此功能。
镜像检查中的非标准字段
自 v27.0 版本起已弃用 计划在下个版本中移除:v28.0
Config 字段返回的显示在 docker image inspect(以及由 GET /images/{name}/json API 端点返回)返回了额外的字段,这些字段不是镜像配置的一部分,也不是 Docker 镜像规范 和 OCI 镜像规范 的一部分。
这些字段从不设置(且始终返回类型的默认值), 但在留空时不会在响应中省略。由于这些字段并非镜像配置响应的一部分,因此已弃用, 将在下一个版本中从 API 中删除。
以下字段目前包含在 API 响应中,但不是底层镜像的 Config 字段的一部分,并且已被弃用:
HostnameDomainnameAttachStdinAttachStdoutAttachStderrTtyOpenStdinStdinOnceImageNetworkDisabled(除非设置,否则已省略)MacAddress(除非设置,否则已省略)StopTimeout(除非设置,否则已省略)
图驱动插件(实验性)
自 v27.0 版本起已弃用 默认在版本 v27.0 中禁用 计划在下个版本中移除:v28.0
图驱动插件 是 Docker 引擎的一项实验性功能,允许通过自定义存储驱动程序来扩展 Docker 引擎,用于存储镜像和容器。自其诞生以来,该功能未得到维护,将在即将发布的版本中不再支持。
在 v27.0 中,默认情况下已禁用 graphdriver 插件支持,并将在 v28.0 中删除。v27.0 中提供了一个 DOCKERD_DEPRECATED_GRAPHDRIVER_PLUGINS 环境变量以重新启用该功能。必须在守护程序的环境中将此环境变量设置为非空值。
DOCKERD_DEPRECATED_GRAPHDRIVER_PLUGINS 环境变量,以及对 graphdriver 插件的支持将在 v28.0 中移除。使用此功能的用户建议将 Docker 引擎配置为使用
containerd 镜像存储
和自定义的
快照器
API CORS 响应头
自 v27.0 版本起已弃用 计划在下个版本中移除:v28.0
Docker 守护进程的 api-cors-header 配置选项不安全,
因此已被弃用并计划移除。
错误地设置此选项可能会给未经过身份验证的跨域请求留出可被守护进程接受的窗口。
从 Docker Engine v27.0 开始,此标志仍可以设置,
但除非环境变量
DOCKERD_DEPRECATED_CORS_HEADER 也被设置为非空值,否则它不会产生任何效果。
此标志将在 v28.0 中完全移除。
这是授权插件和其他依赖此选项从浏览器访问 Docker API 的程序的破坏性更改。 如果需要通过浏览器访问 API,请使用反向代理。
未认证的 TCP 连接
在版本中弃用:v26.0 计划在下个版本中移除:v28.0
将 Docker 守护进程配置为侦听 TCP 地址将需要强制执行 TLS 验证。此更改旨在通过防止未经授权的访问 Docker 守护进程,确保在可能不安全的网络上的通信安全。此强制 TLS 要求适用于所有 TCP 地址,但 tcp://localhost 除外。
在27.0版本及更高版本中,指定--tls=false或--tlsverify=false命令行参数会导致守护进程在配置为通过TCP接受远程连接时无法启动。
这也适用于daemon.json中的等效配置选项。
为了便于通过 TCP 远程访问 Docker 守护进程,您需要实现 TLS 验证。这通过加密传输中的数据并提供相互身份验证机制来保护连接。
对于不需要远程守护程序访问的环境, 我们建议将 Docker 守护程序绑定到 Unix 套接字。 对于需要远程访问且无法使用 TLS 加密的守护程序, 您可能需要考虑使用 SSH 作为替代解决方案。
有关配置 Docker 守护程序的 TLS(或 SSH)的更多信息、帮助和支持,请参阅 保护 Docker 守护程序套接字。
Container 和 ContainerConfig Image inspect 字段
在版本中弃用:v25.0 在版本中移除的目标:v26.0
Container 和 ContainerConfig 字段由 docker inspect 返回,主要是经典(非 BuildKit)镜像构建器的实现细节。
这些字段不具备可移植性,在使用基于 BuildKit 的构建器(自 v23.0 起默认启用)时为空。
这些字段在 v25.0 中已弃用,从 v26.0 开始将被省略。
如果需要镜像的配置信息,可以从 Config 字段获取。
弃用旧版 API 版本
在版本中弃用:v25.0 在版本中移除的目标:v26.0
Docker 守护进程为向后兼容旧客户端提供了版本化的 API。Docker 客户端可以执行 API 版本协商,以选择守护进程支持的最新 API 版本(在必要时降级到较旧的 API 版本)。API 版本协商在 Docker v1.12.0(API 1.24)中引入,此版本之前的客户端使用固定的 API 版本。
Docker Engine 版本至 v25.0 为所有 API 版本 提供支持,这些版本包含在给定平台的稳定版本中。对于 Linux 上的 Docker 守护进程,支持的最早 API 版本为 1.12(对应 Docker Engine v1.0.0),而对于 Windows 上的 Docker 守护进程,支持的最早 API 版本为 1.24(对应 Docker Engine v1.12.0)。
对旧版 API 的支持(在当前版本的 Docker 引擎上提供旧版 API)主要是为了与最近但仍受支持的客户端版本兼容,这是常见的情况(Docker 守护程序可能已更新到最新版本,但并非所有客户端都已更新,反之亦然)。对更早版本的支持(由已停止支持的 Docker 守护程序版本提供的 API 版本)仅以“尽力而为”的方式提供。
使用旧版 API 的情况很少,而支持旧版 API 版本会带来相当大的复杂性(Docker 1.0.0 已经发布 10 年了)。因此,我们将开始弃用对旧版 API 的支持。
Docker Engine v25.0 默认情况下禁用早于 1.24 的 API 版本(使 Linux 和 Windows 守护程序之间的最低支持 API 版本保持一致)。当使用早于 1.24 的 API 版本的客户端连接时,守护程序会返回错误。以下示例将 Docker CLI 配置为使用 API 版本 1.23,这将产生错误:
DOCKER_API_VERSION=1.23 docker version
Error response from daemon: client version 1.23 is too old. Minimum supported API version is 1.24,
upgrade your client to a newer version
引入了一个环境变量(DOCKER_MIN_API_VERSION),允许在守护进程中重新启用旧的 API 版本。此环境变量必须在守护进程的环境中设置(例如,通过一个
systemd 覆盖文件),并且指定的 API 版本必须由守护进程支持(Linux 上为 1.12 或更高版本,Windows 上为 1.24 或更高版本)。
对低于 1.24 的 API 版本的支持将在 Docker Engine v26 中被永久移除,之后的版本中最小支持的 API 版本将逐步提高。
我们不建议依赖 DOCKER_MIN_API_VERSION 环境变量,除非在无法更新旧客户端且必须支持这些客户端的特殊情况下。
网络别名字段中的容器短ID
在版本中弃用:v25.0 在版本中移除:v26.0
Aliases 字段由 docker inspect 返回,包含容器启动后的容器短 ID。此行为在 v25.0 中已弃用,但在下一个版本 v26.0 之前仍将保留。从该版本开始,Aliases 字段将仅包含通过 docker container create 和 docker run 标志 --network-alias 设置的别名。
在 v25.0 中引入了一个包含容器名称(如果已指定)、主机名、网络别名以及容器短 ID 的新字段 DNSNames,应替代使用 Aliases 字段。
IsAutomated 字段,并在 docker search 上过滤 is-automated
在版本中弃用:v25.0 在版本中移除的目标:v26.0
Docker Hub 的搜索 API 已弃用 is_automated 字段。
因此,镜像搜索中的 IsAutomated 字段在未来将始终设置为 false,搜索 "is-automated=true" 将不会返回任何结果。
在 v25.0 中,已从默认的 docker search
和 docker image search 输出中移除了 AUTOMATED 列,对应的 IsAutomated
模板选项将在 v26.0 中移除。
Logentries 日志驱动
在版本中弃用:v24.0 在版本中移除:v25.0
Logentries 服务 SaaS 于 2022 年 11 月 15 日关闭,导致此日志驱动程序无法正常工作。用户不应再使用此日志驱动程序,且该驱动程序已在 Docker 25.0 中移除。升级后,使用此 logging-driver 的现有容器将迁移到使用“local”日志驱动程序。
守护进程的 OOM-score 调整
在版本中弃用:v24.0 在版本中移除:v25.0
添加了 oom-score-adjust 选项以防止守护程序在其他进程之前被 OOM 杀死。此选项主要是为了方便而添加的,因为在当时将守护程序作为 systemd 单元运行还不是很常见。
让守护进程自行设置限制并非最佳实践,而应由启动守护进程的进程管理器来处理。
Docker v20.10 及更新版本默认不再调整守护进程的 OOM 分数, 而是将 OOM 分数设置为随包提供的 systemd 单元(OOMScoreAdjust)。
目前依赖此功能的用户建议在启动守护程序时,使用systemd或其他方式调整守护程序的OOM分数。
BuildKit 构建信息
在版本中弃用:v23.0 在版本中移除:v24.0
构建信息 结构已在 BuildKit v0.10.0 中引入,并使用构建元数据生成,使您能够查看构建所使用的所有源( 镜像、Git 仓库)及其确切版本,以及传递给构建的配置。如果生成镜像,此信息也会嵌入到镜像配置中。
Linux 镜像的旧版构建器
在版本中弃用:v23.0
Docker v23.0 默认使用 BuildKit 构建 Linux 镜像,并使用
Buildx CLI 组件进行
docker build。通过这一变更,docker build 现在公开了 BuildKit 提供的所有高级功能,这些功能此前仅可通过
docker buildx 子命令访问。
安装 Buildx 组件时,会自动安装 docker CLI,
通过我们的 .deb 或 .rpm 包进行安装,静态链接的Binaries在 download.docker.com 上提供,并通过
docker/buildx-bin 镜像
在 Docker Hub 上提供。请参阅
Buildx 部分
以获取安装 Buildx 组件的详细说明。
本次发布标志着 Linux 镜像经典(“遗留”)构建器的弃用周期的开始。经典构建器将不再进行主动开发(仅修复漏洞)。BuildKit 的开发始于五年前,自 Docker 18.09 起已脱离“实验”阶段,并已成为 Docker Desktop 的默认构建器。尽管我们认为 BuildKit 已稳定可用于常规使用,但行为上仍可能存在一些变化。如果您在使用 BuildKit 时遇到问题,我们鼓励您在 GitHub 上的 BuildKit 问题跟踪器{:target="blank" rel="noopener" class=""} 中报告问题。
用于构建 Windows 镜像的经典构建器
BuildKit 尚不支持构建 Windows 镜像,而
docker build在 Windows 守护程序上继续使用经典构建器来构建本机 Windows 镜像。
Legacy builder fallback
在版本中弃用:v23.0
Docker v23.0 默认使用 BuildKit 构建 Linux 镜像, 需要 Buildx 组件来使用 BuildKit 构建镜像。可能存在 Buildx 组件不可用的情况,此时无法使用 BuildKit。
为了顺利过渡到将 BuildKit 作为默认构建器,Docker v23.0 在某些情况下会自动回退,或产生错误以帮助用户解决问题。
在用户未明确选择使用 BuildKit 的情况下(即未设置 DOCKER_BUILDKIT=1),CLI 会自动回退到经典构建器,但会打印弃用警告:
DEPRECATED: The legacy builder is deprecated and will be removed in a future release.
Install the buildx component to build images with BuildKit:
https://docs.docker.com/go/buildx/此情况可能发生在使用静态Binaries安装docker CLI,
且Buildx组件未安装或未正确安装时。此回退将在未来的版本中移除,因此我们建议
安装Buildx组件
并为您的构建使用BuildKit,或使用DOCKER_BUILDKIT=0选择不使用BuildKit。
如果您选择使用 BuildKit(DOCKER_BUILDKIT=1),但缺少 Buildx 组件,系统会打印错误,且 docker build 命令将失败:
ERROR: BuildKit is enabled but the buildx component is missing or broken.
Install the buildx component to build images with BuildKit:
https://docs.docker.com/go/buildx/我们推荐安装 Buildx 组件以继续使用 BuildKit 进行构建,但作为替代方案,用户可以取消设置 DOCKER_BUILDKIT 环境变量以回退到旧版构建器,
或使用 docker build --no-cache 选择不使用 BuildKit。
请注意, 经典构建器已弃用 因此,在未来的版本中,自动回退和选择不使用 BuildKit 将不再可能。
CentOS 7 和 RHEL 7 上的 Btrfs 存储驱动
在版本中移除:v23.0
在 CentOS 和 RHEL 上提供的 btrfs 存储驱动程序作为技术预览由 CentOS 和 RHEL 提供,但自
Red Hat Enterprise Linux 7.4 发布版本以来已被弃用,
并在 CentOS 8 和 RHEL 8 中被移除。使用 CentOS 上的 btrfs 存储驱动程序的用户建议迁移到其他存储驱动程序,例如 overlay2,
现在是默认的存储驱动程序。Docker 23.0 继续提供 btrfs 存储驱动程序,以允许用户迁移到替代驱动程序。Docker 的下一个版本将不再提供此驱动程序。
支持加密的 TLS 私钥
在版本中弃用:v20.10
在版本中移除:v23.0
已弃用并移除加密的 TLS 私钥的使用。 Golang 已弃用对遗留的 PEM 加密(在 RFC 1423)的支持,因为其设计存在安全隐患(参见 https://go-review.googlesource.com/c/go/+/264159)。
此功能允许使用带有提供的密码的加密私钥,但并未提供额外的安全性,因为加密已知存在漏洞,且密钥与密码在文件系统中相邻存放。建议用户解密私钥,并以未加密的形式存储以继续使用。
Kubernetes 栈和上下文支持
在版本中弃用:v20.10 在版本中移除:v23.0
随着Compose on Kubernetes的弃用,CLI中的Kubernetes支持已从stack和context命令中移除,与此功能相关的选项现在将被忽略,或可能产生错误。
以下命令行标志已从 docker context 子命令中移除:
--default-stack-orchestrator- swarm 现在是堆栈唯一的(也是默认的)编排器。--kubernetes- Kubernetes 终结点无法再存储于docker context。--kubeconfig- 将上下文导出为 kubeconfig 文件已不再支持。
由 docker context inspect 子命令生成的输出不再包含新上下文的 StackOrchestrator 和 Kubernetes 端点信息。
以下命令行标志已从 docker stack 子命令中移除:
--kubeconfig- 使用 kubeconfig 文件作为上下文已不再支持。--namespace- 为堆栈配置 Kubernetes 命名空间不再受支持。--orchestrator- swarm 现在是堆栈唯一的(也是默认的)编排器。
环境变量 DOCKER_STACK_ORCHESTRATOR, DOCKER_ORCHESTRATOR 和 KUBECONFIG 以及 ~/.docker/config.json 命令行配置文件中的 stackOrchestrator 选项不再使用,将被忽略。
从不符合要求的镜像仓库拉取镜像
在版本中弃用:v20.10
Docker Engine v20.10 及更高版本包含了在拉取之前验证本地镜像缓存中的镜像是否需要更新的优化,从而避免 Docker Engine 发出不必要的 API 请求。这些优化要求容器镜像注册表遵循 开放容器倡议分发规范。
虽然大多数注册表符合规范,但我们发现有些注册表不符合规范,导致docker pull失败。
作为临时解决方案,Docker Engine v20.10 包含了一个回退机制,允许在使用不符合规范的注册表时将 docker pull 设为可用。在这种情况下会打印警告信息:
WARNING Failed to pull manifest by the resolved digest. This registry does not
appear to conform to the distribution registry specification; falling back to
pull by tag. This fallback is DEPRECATED, and will be removed in a future
release.
添加回退选项是为了允许用户将镜像迁移到符合规定的注册表,或使这些注册表符合规定。
请注意,此回退仅解决 docker pull 上的故障。其他命令,
例如 docker stack deploy,或使用 containerd 拉取镜像将继续
失败。
由于这些注册表的其他功能仍然存在故障,我们认为此回退为临时解决方案,并将在即将发布的重大版本中移除该回退。
Windows 上的 Linux 容器 (LCOW)(实验性)
在版本中弃用:v20.10 在版本中移除:v23.0
在 Docker 17.09 中,作为技术预览,引入了在 Windows 上运行 Linux 容器(LCOW)的实验性功能。尽管在其引入后进行了许多增强,但该功能从未达到完整状态,现已停止开发,转而支持在 WSL2 中本机运行 Docker。
希望在 Windows 主机上运行 Linux 工作负载的开发人员建议使用 Docker Desktop with WSL2。
使用 cgroups v1 的 BLKIO 权重选项
在版本中弃用:v20.10
指定 blkio 权重(docker run --blkio-weight 和 docker run --blkio-weight-device)
在使用 cgroups v1 时已被标记为弃用,因为相应的功能
已在 Linux 内核 v5.0 及更高版本中
移除。
当使用 cgroups v2 时,--blkio-weight 选项是通过
`io.weight 实现的。
内核内存限制
在版本中弃用:v20.10 在版本中移除:v23.0
指定内核内存限制(docker run --kernel-memory)不再受支持,
因为
Linux 内核在 v5.4 中弃用了 kmem.limit_in_bytes。
OCI 运行时规范现已将此选项(以及 --kernel-memory-tcp)标记为
“不推荐使用”,
并且诸如 runc 之类的 OCI 运行时不再支持此选项。
Docker API v1.42 及以上版本在设置时将忽略此选项。较旧版本的 API 仍然接受该选项,但具体是否生效取决于所使用的 OCI 运行时。
注意
在 Docker 中尚未弃用(目前),OCI 运行时规范也弃用了
memory.kmem.tcp.limit_in_bytes选项。当使用runc作为运行时,此选项不起作用。Linux 内核并未明确弃用此功能,并且在runcissue 跟踪器中有一个跟踪问题,以确定是否应重新启用此选项,或者这是 Linux 内核维护人员的疏忽(参见 opencontainers/runc#3174)。
memory.kmem.tcp.limit_in_bytes选项仅在使用 cgroups v1 的安装中受支持, 在使用 cgroups v2 的安装中不可用。此选项仅由 API 支持, 并未在docker命令行中公开。
使用集群存储的经典 Swarm 和覆盖网络
在版本中弃用:v20.10 在版本中移除:v23.0
独立("经典")Swarm 已被弃用,连同使用外部键/值存储的 overlay 网络。相应的--cluster-advertise、--cluster-store 和 --cluster-store-opt 守护程序选项已被移除。
对旧版 ~/.dockercfg 配置文件的 Support
在版本中弃用:v20.10 在版本中移除:v23.0
直到 v1.7.0 版本,Docker CLI 使用 ~/.dockercfg 文件来存储在登录到仓库(docker login)后获得的凭据。Docker v1.7.0 用一个新的 CLI 配置文件替换了这个文件,该文件位于 ~/.docker/config.json。在实现新的配置文件时,保留了旧的文件(和文件格式)作为后备,以帮助现有用户迁移到新文件。
考虑到旧文件格式鼓励以不安全的方式存储凭据(凭据未加密存储),并且自 Docker v1.7.0 以来的任何版本的 CLI 都不会创建此文件,因此已移除此文件及其格式的支持。
实验性 CLI 功能的配置选项
在版本中弃用:v19.03
在版本中移除:v23.0
DOCKER_CLI_EXPERIMENTAL 环境变量和 CLI 配置文件中对应的 experimental
字段已弃用。实验性功能默认启用,这些配置选项已不再起作用。
从 v23.0 开始,Docker CLI 不再在 docker version 的输出中为客户端打印 Experimental,并且该字段已从 JSON 格式中移除。
CLI 插件支持
在版本中弃用:v20.10
CLI 插件 API 现已被标记为已弃用。
Dockerfile 旧版 ENV name value 语法
在版本中弃用:v20.10
Dockerfile 的 ENV 指令允许使用 ENV name=value
或 ENV name value 来设置值。后者(ENV name value)形式可能会产生歧义,例如,
以下内容定义了一个环境变量(ONE),其值为 "TWO= THREE=world",
但可能原本打算设置三个环境变量:
ENV ONE TWO= THREE=world此格式也不允许在 Dockerfile 中的单个
ENV 行中设置多个环境变量。
不建议使用ENV name value语法,未来版本中可能会移除。建议用户将其Dockerfile更新为使用ENV name=value
语法,例如:
ENV ONE="" TWO="" THREE="world"docker build --stream 标志(实验性)
在版本中弃用:v20.10 在版本中移除:v20.10
Docker v17.07 引入了一个实验性的 --stream 标志在 docker build 上,
允许构建上下文增量地发送到守护进程,而不是无条件地发送整个构建上下文。
此功能已在 BuildKit 中重新实现,后者默认使用流式传输,当使用经典构建器时,--stream 选项将被忽略,并会打印弃用警告。
希望使用此功能的用户可以通过设置DOCKER_BUILDKIT=1环境变量或通过守护程序或CLI配置文件来启用BuildKit。
fluentd-async-connect log opt
在版本中弃用:v20.10
fluentd 日志驱动的 --log-opt fluentd-async-connect 选项已弃用,建议使用 --log-opt fluentd-async。
如果使用旧选项,守护程序日志中将记录弃用消息:
fluent#New: AsyncConnect is now deprecated, use Async instead
鼓励用户今后使用fluentd-async选项,因为对旧选项的支持将在未来的版本中被移除。
使用镜像清单 v2 schema 1 进行推送和拉取
在版本中弃用:v19.03
默认在版本 v26.0 中禁用
在版本中计划移除的目标: v27.0
镜像清单 v2 schema 1 和“Docker Image v1”格式已被弃用,转而采用 v2 schema 2 和 OCI 镜像规范 格式。
这些旧版格式不应再使用,建议用户将镜像更新为当前格式,或升级到更新的镜像。 从 Docker v26.0 开始,默认情况下禁止拉取这些镜像,在尝试拉取镜像时会产生错误:
$ docker pull ubuntu:10.04
Error response from daemon:
[DEPRECATION NOTICE] Docker Image Format v1 and Docker Image manifest version 2, schema 1 support is disabled by default and will be removed in an upcoming release.
Suggest the author of docker.io/library/ubuntu:10.04 to upgrade the image to the OCI Format or Docker Image manifest v2, schema 2.
More information at https://docs.docker.com/go/deprecated-image-specs/
在 Docker v26.0 中添加了一个环境变量(DOCKER_ENABLE_DEPRECATED_PULL_SCHEMA_1_IMAGE),允许在守护进程中重新启用对这些镜像格式的支持。此环境变量必须在守护进程的环境中设置为非空值(例如,通过
systemd 覆盖文件)。
对 DOCKER_ENABLE_DEPRECATED_PULL_SCHEMA_1_IMAGE 环境变量的支持将在 Docker v27.0 中移除,之后此功能将被永久移除。
docker engine 子命令
在版本中弃用:v19.03
在版本中移除:v20.10
docker engine activate、docker engine check 和 docker engine update
提供了一种替代安装方法,用于将 Docker 社区版引擎升级到 Docker 企业版,使用基于镜像的 Docker 引擎发行版。
此功能仅在 Linux 上可用,并且仅在本地节点上执行时可用。
鉴于此功能的局限性,以及该功能未被广泛采用,
将移除 docker engine 子命令,转而通过标准的包管理器进行安装。
顶级 docker deploy 子命令(实验性)
在版本中弃用:v19.03
在版本中移除:v20.10
顶级 docker deploy 命令(使用“Docker 应用程序包”
(.dab 文件格式)作为实验性功能在 Docker 1.13 / 17.03 中引入,但被使用 docker stack deploy
子命令的 Docker Compose 文件所取代。
docker stack deploy 使用“dab”文件(实验性)
在版本中弃用:v19.03
在版本中移除:v20.10
由于该功能没有进行任何开发,且该文件格式没有被积极使用,将移除对 DAB 文件格式和顶级 docker deploy 命令(在 19.03 中默认隐藏)的支持,转而使用 docker stack deploy
并采用 compose 文件。
对 overlay2.override_kernel_check 存储选项的支持
在版本中弃用:v19.03 在版本中移除:v24.0
此守护程序配置选项禁用了用于检测 Linux 内核是否支持具有多个下层目录的 OverlayFS 的内核版本检查,这是 overlay2 存储驱动程序所必需的。从 Docker v19.03.7 开始,检测已改进,不再依赖于内核的版本,因此此选项不再使用。
AuFS 存储驱动
在版本中弃用:v19.03 在版本中移除:v24.0
aufs 存储驱动已弃用,建议使用 overlay2,并在 Docker Engine v24.0 中已被移除。使用 aufs 存储驱动的用户必须在升级到 Docker Engine v24.0 之前迁移到其他存储驱动,例如 overlay2。
aufs 存储驱动程序便于在不支持 OverlayFS 的发行版上运行 Docker,例如最初搭载 3.14 内核的 Ubuntu 14.04 LTS。
既然 Ubuntu 14.04 已不再作为 Docker 的受支持发行版,且 overlay2
已适用于所有受支持的发行版(因为它们要么使用内核 4.x,要么已回传支持多个 lowerdirs),就没有继续维护 aufs 存储驱动程序的理由了。
Legacy overlay 存储驱动
在版本中弃用:v18.09 在版本中移除:v24.0
overlay 存储驱动程序已被弃用,建议改用 overlay2 存储驱动程序,后者具备 overlay 的所有优势,同时避免了其限制(过度消耗 inode)。在 Docker Engine v24.0 中已移除旧版 overlay 存储驱动程序。使用 overlay 存储驱动程序的用户在升级到 Docker Engine v24.0 之前应迁移到 overlay2 存储驱动程序。
遗留的 overlay 存储驱动程序允许在内核版本早于 v4.x 的系统上使用基于 overlayFS 的文件系统。现在,所有受支持的发行版都能够运行 overlay2(因为它们要么使用 4.x 内核,要么已经回传了对多个 lowerdirs 的支持),因此没有理由继续维护 overlay 存储驱动程序。
设备映射器存储驱动
在版本中弃用:v18.09 默认在版本 v23.0 中禁用 在版本中移除:v25.0
devicemapper 存储驱动已弃用,建议使用 overlay2,并且已在 Docker Engine v25.0 中移除。使用 devicemapper 存储驱动的用户必须在升级到 Docker Engine v25.0 之前迁移到其他存储驱动,例如 overlay2。
devicemapper 存储驱动程序便于在不支持其他存储驱动程序(如 overlay2 或 btrfs)的旧版(3.x)内核上运行 Docker。
现在,所有受支持的发行版都已添加对 overlay2 的支持(因为它们要么使用 4.x 内核,要么已将对多个 lowerdirs 的支持移植过来),因此没有理由继续维护 devicemapper 存储驱动程序。
在引擎标签中使用保留命名空间
在版本中弃用:v18.06
在版本中移除:v20.10
引擎标签中的命名空间 com.docker.*、io.docker.* 和 org.dockerproject.*
始终被记录为保留,但从未有任何强制执行。
使用这些命名空间现在会在引擎日志中发出警告,以劝阻使用,并且在 v20.10 及以上版本中将改为报错。
--disable-legacy-registry 覆盖守护进程选项
在版本 v17.12 中已禁用
在版本中移除:v19.03
在 Docker 17.12 中已禁用 --disable-legacy-registry 标志,使用时会打印错误。为了打印此错误,该标志本身仍然存在,但已被隐藏。该标志已在 Docker 19.03 中移除。
与 V1 注册表交互
默认在版本中禁用:v17.06
在版本中移除:v17.12
版本 1.8.3 添加了一个标志(--disable-legacy-registry=false),可防止 Docker 守护程序对 v1 注册表执行 pull、push 和 login 操作。尽管默认已启用,但这表明将弃用 v1 协议的意图。
在1.13版本中,对公共注册表的v1协议的支持已被移除。任何使用v1的镜像配置应更新为使用 v2 注册表镜像。
从 Docker 17.12 开始,已移除对 V1 注册表的支持,并且不能再使用 --disable-legacy-registry 标志,设置 dockerd 时将无法启动。
默认异步 service create 和 service update
弃用发布版本:v17.05
默认在发布版本中禁用: v17.10
Docker 17.05 添加了一个可选的 --detach=false 选项,使 docker service create 和 docker service update 同步工作。此选项将在 Docker 17.10 中默认启用,届时可以使用 --detach 标志来使用以前的(异步)行为。
此选项的默认值在 Docker 17.10 中也会相应地为 docker service rollback
和 docker service scale 进行更改。
-g 和 --graph 标志在 dockerd 上
弃用发布版本:v17.05
在版本中移除:v23.0
用于 dockerd 或 docker daemon 命令的 -g 或 --graph 标志用于指示存储持久数据和资源配置的目录,现已替换为更具描述性的 --data-root
标志。这些标志在 v17.05 中被弃用并隐藏,在 v23.0 中被移除。
NetworkSettings 中的一级网络属性
弃用发布版本: v1.13.0
在版本中移除的目标:v17.12
在检查容器时,NetworkSettings 包含有关默认(“bridge”)网络的顶级信息;
EndpointID, Gateway, GlobalIPv6Address, GlobalIPv6PrefixLen, IPAddress,
IPPrefixLen, IPv6Gateway, 和 MacAddress。
这些属性已被弃用,建议使用NetworkSettings.Networks中的按网络属性。这些属性在Docker 1.9中已被标记为“弃用”,但为了向后兼容性仍保留着。
请参阅 #17538 以获取更多信息。
filter 选项用于 /images/json 端点
弃用发布版本: v1.13.0
在版本中移除:v20.10
用于按引用来过滤镜像列表(名称或名称:标签)的filter选项现在已实现为常规过滤器,命名为reference。
repository:shortid 镜像引用
弃用发布版本: v1.13.0
在版本中移除:v17.12
使用repository:shortid语法来引用镜像很少使用,
与标签引用冲突,并且可能与摘要引用混淆。
在 Docker 17.12 中移除了对使用 repository:shortid 符号引用镜像的支持。
docker daemon 子命令
弃用发布版本: v1.13.0
在版本中移除:v17.12
守护进程已移动到单独的Binaries(dockerd),应改用该文件。
引擎标签中存在冲突值的重复键
弃用发布版本: v1.13.0
在版本中移除:v17.12
当使用冲突的值设置重复键时,将产生错误,且守护进程将无法启动。
MAINTAINER in Dockerfile
弃用发布版本: v1.13.0
MAINTAINER 是早期非常有限的 LABEL 形式,应改用后者。
未指定版本的 API 调用
弃用发布版本: v1.13.0
在版本中移除的目标:v17.12
API版本应提供给所有API调用,以确保与未来的Engine版本兼容。现在,您必须请求/v1.25/containers/json,而不是仅请求例如URL/containers/json。
不支持 d_type 的 overlay/overlay2 后备文件系统
弃用发布版本: v1.13.0
在版本中移除:v17.12
如果底层文件系统不支持d_type,则overlay和overlay2存储驱动程序无法按预期工作。例如,如果使用ftype=0选项格式化,XFS不支持d_type。
对这些设置的支持已被移除,Docker v23.0 及更高版本现在在尝试在不支持 d_type 的后端文件系统上使用 overlay2 或 overlay 存储驱动程序时将无法启动。
详情请参阅 #27358。
--automated 和 --stars 标志在 docker search 上
在版本中弃用: v1.12.0
在版本中移除:v20.10
docker search --automated 和 docker search --stars 选项已弃用。
请改用 docker search --filter=is-automated=<true|false> 和 docker search --filter=stars=...。
-h 是 --help 的简写
在版本中弃用: v1.12.0
在版本中计划移除的目标: v17.09
简写(-h)在 Linux 上不如 --help 常见,并且不能在所有子命令中使用(因为它与例如 -h / --hostname 在 docker create 上冲突)。因此,-h 的简写没有在子命令的“用法”输出中打印,也没有被记录,并现在被标记为“已弃用”。
-e 和 --email 标志在 docker login 上
弃用发布版本: v1.11.0
在版本中移除: v17.06
docker login 不再自动为目标注册表注册账户,即使给定的用户名不存在。由于这一变化,不再需要 email 标志,将被弃用。
分隔符 (:) 位于 docker run 上的 --security-opt 标志
弃用发布版本: v1.11.0
在版本中移除的目标:v17.06
标志 --security-opt 不再使用冒号分隔符 (:) 来分隔键和值,而是使用等号符号 (=) 以与其他类似标志(如 --storage-opt)保持一致。
API 中含义模糊的事件字段
弃用发布版本: v1.10.0
事件 API 中的字段 ID、Status 和 From 已被弃用,取而代之的是更丰富的结构。
请参阅事件 API 文档以了解新格式。
-f 标志在 docker tag
弃用发布版本: v1.10.0
在版本中移除: v1.12.0
为了使各种docker命令的标签保持一致,-f命令上的docker tag标志已被弃用。现在无需指定-f即可将标签从一个镜像移动到另一个镜像。而且如果缺少docker标志且指定的标签已被使用,-f将不再报错。
HostConfig 在 API 容器启动时
弃用发布版本: v1.10.0
在版本中移除: v1.12.0
在容器创建时定义 POST /containers/create,以替代向 POST /containers/{name}/start 传递 HostConfig(已弃用)。
--before 和 --since 标志在 docker ps 上
弃用发布版本: v1.10.0
在版本中移除: v1.12.0
docker ps --before 和 docker ps --since 选项已弃用。
请改用 docker ps --filter=before=... 和 docker ps --filter=since=...。
特定驱动程序的日志标签
弃用发布版本: v1.9.0
在版本中移除: v1.12.0
日志标签现在在不同的日志记录驱动程序中以标准方式生成。
因此,特定于驱动程序的日志标签选项 syslog-tag、gelf-tag 和
fluentd-tag 已被弃用,转而使用通用的 tag 选项。
$ docker --log-driver=syslog --log-opt tag="{{.ImageName}}/{{.Name}}/{{.ID}}"
Docker 内容信任 ENV 密码变量名称变更
弃用发布版本: v1.9.0
在版本中移除: v1.12.0
自1.9起,Docker 内容信任离线密钥已更名为根密钥,标记密钥已更名为仓库密钥。由于这一更名,我们也在更改相应的环境变量。
- DOCKER_CONTENT_TRUST_OFFLINE_PASSPHRASE 现在命名为 DOCKER_CONTENT_TRUST_ROOT_PASSPHRASE
- DOCKER_CONTENT_TRUST_TAGGING_PASSPHRASE 现在命名为 DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE
/containers/(id or name)/copy 端点
弃用发布版本: v1.8.0
在版本中移除: v1.12.0
端点 /containers/(id or name)/copy 已弃用,建议使用 /containers/(id or name)/archive。
LXC 内置 exec 驱动程序
弃用发布版本: v1.8.0
在版本中移除: v1.10.0
内置的 LXC 执行驱动程序、lxc-conf 标志和 API 字段已被移除。
旧命令行选项
弃用发布版本: v1.8.0
在版本中移除: v1.10.0
标志 -d 和 --daemon 已弃用。请改用单独的 dockerd Binaries。
以下某些命令行选项的单破折号(-opt)变体已弃用,并由双破折号选项(--opt)替换:
docker attach -nostdindocker attach -sig-proxydocker build -no-cachedocker build -rmdocker commit -authordocker commit -rundocker events -sincedocker history -notruncdocker images -notruncdocker inspect -formatdocker ps -beforeIddocker ps -notruncdocker ps -sinceIddocker rm -linkdocker run -cidfiledocker run -dnsdocker run -entrypointdocker run -exposedocker run -linkdocker run -lxc-confdocker run -ndocker run -privilegeddocker run -volumes-fromdocker search -notruncdocker search -starsdocker search -tdocker search -trusteddocker tag -force
以下双破折号选项已弃用且无替代方案:
docker run --cpusetdocker run --networkingdocker ps --since-iddocker ps --before-iddocker search --trusted
弃用发布版本: v1.5.0
在版本中移除: v1.12.0
删除了单破折号(-help),改用双破折号 --help
--api-enable-cors 标志在 dockerd
弃用发布版本: v1.6.0
在版本中移除: v17.09
标志 --api-enable-cors 自 v1.6.0 起已弃用。请改用标志
--api-cors-header。
--run 标志在 docker commit
弃用发布版本: v0.10.0
在版本中移除: v1.13.0
docker commit 命令的 --run 标志(及其简短版本 -run)已被弃用,转而使用 --changes 标志,该标志允许传递 Dockerfile 命令。
三个参数形式在 docker import
弃用发布版本: v0.6.7
在版本中移除: v1.12.0
docker import 命令格式 file|URL|- [REPOSITORY [TAG]] 自2013年11月起已被弃用。现已不再支持。