已弃用的 Docker Engine 功能

目录

本页概述了 Engine 中已弃用的功能。变化 ,并且不包括支持的 (Linux) 发行版。要了解 有关终止对 Linux 发行版的支持,请参阅发行说明

功能弃用策略

随着对 Docker 的更改,有时现有功能可能需要 被删除或替换为新功能。删除现有功能之前 它在文档中被标记为“已弃用”,并在 Docker 中保留 至少一个稳定版本,除非另有明确说明。在那之后 它可能会被删除。

用户应注意每个版本的已弃用功能列表 并计划从这些功能迁移,并(如果适用)朝着 替换功能。

已弃用的引擎功能

下表概述了已弃用功能的当前状态:

  • 已弃用:该功能被标记为“已弃用”,不应再使用。

    该功能可能会在未来发行版中被删除、禁用或更改行为。 “Deprecated” 列包含标记该功能的发行版 已弃用,而 “Remove” 列包含一个暂定版本,其中 该功能将被删除。如果 “Remove” 列中不包含任何版本,则 发布尚未决定。

  • 已删除:功能已删除、禁用或隐藏。

    有关详细信息,请参阅链接的部分。某些功能已“软”弃用, 这意味着它们仍然有效以实现向后兼容性,并且 允许用户迁移到替代项。在这种情况下,可能会发出警告 打印出来,用户不应依赖此功能。

地位特征荒废的删除
荒废的镜像检查中的非标准字段27.0 版28.0 版
荒废的API CORS 标头27.0 版28.0 版
荒废的Graphdriver 插件(实验性)27.0 版28.0 版
荒废的未经身份验证的 TCP 连接26.0 版28.0 版
荒废的Image inspect 中的 ContainerContainerConfig 字段25.0 版26.0 版
荒废的弃用旧版 API25.0 版26.0 版
删除network Aliases 字段中的容器短 ID25.0 版26.0 版
荒废的IsAutomated 字段和 is-automated docker 搜索过滤器25.0 版26.0 版
删除LogEntries 日志记录驱动程序24.0 版25.0 版
删除守护进程的 OOM-score 调整24.0 版25.0 版
删除BuildKit 构建信息23.0 版24.0 版
荒废的适用于 Linux 镜像的旧版生成器23.0 版-
荒废的旧版构建器回退23.0 版-
删除CentOS 7 和 RHEL 7 上的 Btrfs 存储驱动程序20.10 版23.0 版
删除支持加密的 TLS 私钥20.10 版23.0 版
删除Kubernetes 堆栈和上下文支持20.10 版23.0 版
荒废的从不合规的镜像注册表中提取镜像20.10 版-
删除Windows 上的 Linux 容器 (LCOW)20.10 版23.0 版
荒废的cgroups v1 的 BLKIO 权重选项20.10 版-
删除内核内存限制20.10 版23.0 版
删除使用外部键/值存储的经典 Swarm 和 overlay 网络20.10 版23.0 版
删除支持使用旧版 ~/.dockercfg 配置文件进行身份验证20.10 版23.0 版
荒废的CLI 插件支持20.10 版-
荒废的Dockerfile 旧版 ENV 名称值语法20.10 版-
删除docker build --stream 标志(实验性)20.10 版20.10 版
荒废的fluentd-async-connect log opt20.10 版-
删除实验性 CLI 功能的配置选项19.03 版23.0 版
荒废的使用镜像清单 v2 架构 1 推送和拉取19.03 版27.0 版
删除docker engine 子命令19.03 版20.10 版
删除顶级 docker deploy 子命令(实验性)19.03 版20.10 版
删除使用“DAB”文件的 Docker 堆栈部署(实验性)19.03 版20.10 版
删除支持 overlay2.override_kernel_check 存储选项19.03 版24.0 版
删除AuFS 存储驱动程序19.03 版24.0 版
删除旧版 “overlay” 存储驱动程序18.09 版24.0 版
删除Device mapper 存储驱动程序18.09 版25.0 版
删除在引擎标签中使用保留命名空间18.06 版20.10 版
删除--disable-legacy-registry override 守护程序选项17.12 版19.03 版
删除与 V1 注册表交互17.06 版17.12 版
删除异步服务创建和服务更新为默认值17.05 版17.10 版
删除dockerd 上的 -g--graph 标志17.05 版23.0 版
荒废的NetworkSettings 中的顶级网络属性1.13 版17.12 版
删除/images/json 端点的 filter 选项1.13 版20.10 版
删除repository:shortid 镜像引用1.13 版17.12 版
删除docker daemon 子命令1.13 版17.12 版
删除引擎标签中值冲突的重复键1.13 版17.12 版
荒废的Dockerfile 中的 MAINTAINER1.13 版-
荒废的没有版本的 API 调用1.13 版17.12 版
删除不支持 overlay/overlay2 d_type备份文件系统1.13 版17.12 版
删除docker search 上的 --automated--stars 标志1.12 版20.10 版
荒废的--help-h 简写1.12 版17.09 版
删除docker login 上的 -e--email 标志1.11 版17.06 版
荒废的docker run--security-opt 标志的分隔符 (1.11 版17.06 版
荒废的API 中的事件字段不明确1.10 版-
删除docker 标记上的 -f 标志1.10 版1.12 版
删除API 容器启动时的 HostConfig1.10 版1.12 版
删除docker ps 上的 --before--since 标志1.10 版1.12 版
删除特定于驱动程序的日志标记1.9 版1.12 版
删除Docker 内容信任 ENV 密码短语变量名称更改1.9 版1.12 版
删除/containers/(id 或 name)/copy 端点1.8 版1.12 版
删除LXC 内置执行驱动程序1.8 版1.10 版
删除旧命令行选项1.8 版1.10 版
删除dockerd 上的 --api-enable-cors 标志1.6 版17.09 版
删除docker commit 上的 --run 标志0.10 版1.13 版
删除docker import 中的三个参数形式0.6.7 版1.12 版

镜像检查中的非标准字段

在版本:v27.0 中已弃用 目标在版本:v28.0 中移除

返回的字段显示在 (和 返回的 API 端点)返回其他字段,这些字段是 不是镜像配置的一部分,也不是 Docker 镜像规范OCI 镜像规范的一部分。Configdocker image inspectGET /images/{name}/json

这些字段永远不会设置(并且始终返回类型的默认值), 但在留空时,响应中不会省略。由于这些字段不是 旨在作为镜像配置响应的一部分,它们已被弃用, 并将在下一个版本的 API 中删除。

以下字段当前包含在 API 响应中,但未包含在 API 响应中 部分,并废弃:Config

  • Hostname
  • Domainname
  • AttachStdin
  • AttachStdout
  • AttachStderr
  • Tty
  • OpenStdin
  • StdinOnce
  • Image
  • NetworkDisabled(除非设置,否则已省略)
  • MacAddress(除非设置,否则已省略)
  • StopTimeout(除非设置,否则已省略)

Graphdriver 插件(实验性)

在版本:v27.0 中默认禁用 在版本:v27.0 中默认禁用 在版本:v28.0 中删除的目标

Graphdriver 插件是一项实验性功能,允许使用自定义 用于存储镜像和容器的存储驱动程序。此功能不是 自成立以来一直维护,并且在即将到来的 释放。

在 v27.0 中,对 graphdriver 插件的支持默认处于禁用状态,并且将 删除了 v28.0。环境变量 在 v27.0 中提供以重新启用该功能。此环境变量必须 在守护程序的环境中设置为非空值。DOCKERD_DEPRECATED_GRAPHDRIVER_PLUGINS

环境变量以及 对 GraphDriver 插件的支持将在 v28.0 中删除。此功能的用户 建议改为将 Docker 引擎配置为使用 containerd 镜像存储和自定义快照程序DOCKERD_DEPRECATED_GRAPHDRIVER_PLUGINS

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 及更高版本中,指定 或 CLI 标志 如果守护程序还配置为接受通过 TCP 的远程连接,则会导致守护程序无法启动。 这也适用于 中的等效配置选项。--tls=false--tlsverify=falsedaemon.json

为了便于通过 TCP 远程访问 Docker 守护进程,您需要 实施 TLS 验证。这通过加密 transit 并提供相互身份验证机制。

对于环境,不需要远程守护程序访问, 我们建议将 Docker 守护程序绑定到 Unix 套接字。 对于需要远程访问且 TLS 加密不可行的守护进程, 您可能需要考虑使用 SSH 作为替代解决方案。

有关更多信息、帮助和分步说明,请访问 为 Docker 守护程序配置 TLS(或 SSH),请参阅保护 Docker 守护程序套接字

Image inspect 中的 ContainerContainerConfig 字段

在版本:v25.0 中已废弃版本:v26.0 中要删除的目标

返回的 and 字段为 主要是经典(非 BuildKit)镜像生成器的实现细节。 这些字段不可移植,并且在使用 基于 BuildKit 的构建器(自 v23.0 起默认启用)。 这些字段在 v25.0 中已弃用,从 v26.0 开始将被省略。 如果需要配置镜像,可以从现场获取。ContainerContainerConfigdocker inspectConfig

弃用旧版 API

在版本:v25.0 中已废弃版本:v26.0 中要删除的目标

Docker 守护程序提供了一个版本化的 API,以便向后兼容旧的 客户。Docker 客户端可以进行 API 版本协商,选择最多的 守护程序支持的最新 API 版本(降级到旧版本的 API (如有必要)。API 版本协商是在 Docker v1.12.0 中引入的 (API 1.24) 的 API 版本,而在此之前的客户端使用的是固定的 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 版本(在当前版本上提供旧版 API 版本 的 Docker 引擎)的主要目的是提供与最近的 但仍支持客户端的版本,这是一种常见情况(Docker 守护程序可能会更新到最新版本,但并非所有客户端都是最新的 反之亦然)。支持之前的 API 版本(API 版本由 Docker Daemon 的 EOL 版本)是在“尽力而为”的基础上提供的。

使用旧 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

引入了一个环境变量 (),它允许 在守护程序中重新启用较旧的 API 版本。此环境变量必须 在守护程序的环境中设置(例如,通过 systemd 覆盖 文件),并将指定的 守护程序必须支持 API 版本(在 Linux 上为更高版本,在 Windows 上为更高版本)。DOCKER_MIN_API_VERSION1.121.24

对低于 API 版本的支持将在 Docker 中永久删除 Engine v26 和支持的最低 API 版本将逐步提高 在之后的版本中。1.24

我们不建议根据环境 变量,但无法更新的特殊情况除外 旧客户端,并且必须支持这些客户端。DOCKER_MIN_API_VERSION

network Aliases 字段中的容器短 ID

已在 v25.0 版本中删除版本:v26.0 中移除

返回的字段包含容器 short 容器启动后的 ID。此行为在 v25.0 中已弃用,但 保留到下一个版本 v26.0。从该版本开始,该字段将仅包含通过 和 标志设置的别名。Aliasesdocker inspectAliasesdocker container createdocker run--network-alias

包含容器名称的新字段(如果指定了容器名称), 主机名、网络别名以及容器短 ID 已 在 v25.0 中引入,应该使用它来代替 field。DNSNamesAliases

在版本:v25.0 中已废弃版本:v26.0 中要删除的目标

该字段已被 Docker Hub 的搜索 API 弃用。 因此,镜像搜索中的字段将始终被设置 到,并且搜索 “is-automated=true” 不会得到 结果。is_automatedIsAutomatedfalse

该列已从 v25.0 的 default 和 output 中删除,相应的模板选项将在 v26.0 中删除。AUTOMATEDdocker searchdocker image searchIsAutomated

Logentries 日志记录驱动程序

已在 v24.0 版中废弃以下版本:v25.0 中删除

logentries 服务 SaaS 已于 2022 年 11 月 15 日关闭,呈现 此日志记录驱动程序无法正常工作。用户不应再使用此日志记录 驱动程序,并且该驱动程序已在 Docker 25.0 中删除。现有容器 使用此日志记录驱动程序将被迁移为使用 “local” 日志记录驱动程序 升级后。

守护进程的 OOM-score 调整

已在 v24.0 版中废弃以下版本:v25.0 中删除

添加了该选项以防止守护进程 OOM-killed 在其他进程之前终止。此选项主要作为 方便,因为将守护进程作为 systemd 单元运行还不常见。oom-score-adjust

让守护进程设置自己的限制不是最佳实践,而是 最好由启动守护进程的进程管理器来处理。

默认情况下,Docker v20.10 及更高版本不再调整守护进程的 OOM 分数, 而是将 OOM-score 设置为 systemd 单元 (OOMScoreAdjust),即 随包裹一起发货。

建议当前依赖此功能的用户调整 启动时,使用 systemd 或其他方式的守护进程的 OOM 分数 守护进程。

BuildKit 构建信息

已在 v23.0 版本中删除 在版本 v24.0 中删除

BuildKit v0.10.0 中引入了构建信息结构,并使用构建元数据生成,允许您查看所有源代码 (镜像、Git 存储库)及其确切的 versions 以及传递给内部版本的配置。这 如果生成了镜像配置,则信息也会嵌入到镜像配置中。

适用于 Linux 镜像的旧版生成器

在版本:v23.0 中已弃用

Docker v23.0 现在默认使用 BuildKit 构建 Linux 镜像,并使用 Buildx CLI 组件进行 .通过此更改,现在公开了所有高级功能 ,以前只能通过子命令使用。docker builddocker builddocker buildx

安装 CLI 时会自动安装 Buildx 组件 使用我们的 OR 包,并提供静态链接的二进制文件 在 上,并通过 Docker Hub 上的 docker/buildx-bin 镜像。请参阅 Buildx 部分 有关安装 Buildx 组件的详细说明。docker.deb.rpmdownload.docker.com

此版本标志着经典(“legacy”)弃用周期的开始 builder 的 Linux 镜像。经典构建器上不会进行任何主动开发 (错误修复除外)。BuildKit 开发始于五年前,留下了 自 Docker 18.09 以来处于“实验”阶段,并且已经是 Docker Desktop 的默认构建器。 虽然我们认为 BuildKit 在一般使用中是稳定的,但可能会有 行为的一些变化。如果您在使用 BuildKit 时遇到问题,我们鼓励 您可以在 GitHub 上的 BuildKit 问题跟踪器中报告问题{:target=“blank” rel=“noopener” class=”"}

用于构建 Windows 镜像的经典构建器

BuildKit 尚未(还)提供对构建 Windows 镜像的支持,并继续使用经典构建器来构建本机 Windows 镜像。docker build

旧版构建器回退

在版本:v23.0 中已弃用

Docker v23.0 现在默认使用 BuildKit 来构建 Linux 镜像, 这需要 Buildx 组件使用 BuildKit 构建镜像。可能有 Buildx 组件不可用,并且 BuildKit 不能 使用。

为了平滑过渡到 BuildKit 作为默认构建器,Docker v23.0 在某些情况下具有自动回退功能,或者生成错误以提供帮助 用户来解决问题。

在用户未明确选择使用 BuildKit(即未设置)的情况下,CLI 会自动回退到经典的 builder 中,但会打印弃用警告:DOCKER_BUILDKIT=1

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/

如果使用静态二进制文件安装 CLI,则可能会出现这种情况。 并且 Buildx 组件未安装或未正确安装。此回退 将在将来的版本中删除,因此我们建议安装 Buildx 组件并使用 BuildKit 进行构建,或者选择退出将 BuildKit 与 .dockerDOCKER_BUILDKIT=0

如果您选择使用 BuildKit (),但 Buildx 组件 缺失,则会打印错误,并且命令失败:DOCKER_BUILDKIT=1docker 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 进行构建,但用户也可以 取消设置环境变量以回退到旧版构建器, 或选择退出使用 BuildKit 和 .DOCKER_BUILDKITDOCKER_BUILDKIT=0

请注意,经典构建器已弃用,因此自动回退和选择退出使用 BuildKit 将不再 在未来版本中可能。

CentOS 7 和 RHEL 7 上的 Btrfs 存储驱动程序

在版本:v23.0 中删除

CentOS 和 RHEL 上的存储驱动程序作为技术预览提供 由 CentOS 和 RHEL 提供,但自 Red Hat Enterprise Linux 7.4 版本起已被弃用, 并在 CentOS 8 和 RHEL 8 中删除。CentOS 上 storage driver 的用户 建议迁移到其他存储驱动程序,例如 ,其中 现在是默认存储驱动程序。Docker 23.0 继续提供存储驱动程序,以允许用户迁移到替代驱动程序。下一个版本 的 Docker 将不再提供此驱动程序。btrfsbtrfsoverlay2btrfs

支持加密的 TLS 私钥

在版本:v20.10 中已弃用

在版本:v23.0 中删除

使用加密的 TLS 私有密钥已被弃用并已删除。 Golang 已弃用对旧版 PEM 加密(如 RFC 1423 中指定)的支持,因为它不安全 设计(请参阅 https://go-review.googlesource.com/c/go/+/264159)。

此功能允许使用带有提供密码的加密私钥, 但没有提供额外的安全性,因为已知加密已破解, 密钥位于文件系统中密码的旁边。推荐用户 解密私钥,并将其存储在未加密状态以继续使用它。

Kubernetes 堆栈和上下文支持

在版本:v20.10 中已移除版本:v23.0 中移除

Kubernetes 上弃用 Compose 后, 和 命令中对 Kubernetes 的支持已从 CLI 以及与此功能相关的选项现在要么被忽略,要么可能被忽略 产生错误。stackcontext

以下命令行标志已从子命令中删除:docker context

  • --default-stack-orchestrator- Swarm 现在是堆栈的唯一(也是默认)编排器。
  • --kubernetes- Kubernetes 端点不能再存储在 中。docker context
  • --kubeconfig- 不再支持将上下文导出为 kubeconfig 文件。

子命令生成的输出不再包含 有关新上下文的信息和终端节点。docker context inspectStackOrchestratorKubernetes

以下命令行标志已从子命令中删除:docker stack

  • --kubeconfig- 不再支持使用 kubeconfig 文件作为上下文。
  • --namespace- 不再支持为堆栈配置 Kubernetes 命名空间。
  • --orchestrator- Swarm 现在是堆栈的唯一(也是默认)编排器。

、 和 环境 变量以及 CLI 配置文件中的选项将不再使用,并被忽略。DOCKER_STACK_ORCHESTRATORDOCKER_ORCHESTRATORKUBECONFIGstackOrchestrator~/.docker/config.json

从不合规的镜像注册表中提取镜像

在版本:v20.10 中已弃用

Docker Engine v20.10 及更高版本包含优化,以验证 本地镜像缓存需要在拉取前更新,从而阻止 Docker Engine 防止发出不必要的 API 请求。这些优化需要容器 image 注册表以符合 Open Container Initiative 分发规范

虽然大多数注册管理机构都符合规范,但我们遇到了一些注册管理机构 不合规,导致 TO 失败。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.

添加回退功能是为了允许用户将其镜像迁移到合规的 Registry 的 registry 进行注册,或者使这些 registry 变得合规。

请注意,此回退仅解决 上的故障。其他命令 例如 ,或者使用 WILL continue 失败。docker pulldocker stack deploycontainerd

鉴于这些 registry 仍然破坏了其他功能,我们考虑 this fallback 是一个临时解决方案,并将在即将到来的 主要版本。

Windows 上的 Linux 容器 (LCOW)(实验性)

在版本:v20.10 中已移除版本:v23.0 中移除

引入了在 Windows 上运行 Linux 容器 (LCOW) 的实验性功能 作为 Docker 17.09 中的技术预览版。虽然之后进行了许多改进 它的推出,该功能从未达到完整,开发已经 现在停止,转而在 WSL2 的 Linux 上原生运行 Docker。

建议希望在 Windows 主机上运行 Linux 工作负载的开发人员改用 Docker Desktop 和 WSL2

cgroups v1 的 BLKIO 权重选项

在版本:v20.10 中已弃用

指定 blkio 权重 ( 和 ) 现在在使用 cgroups v1 时标记为已弃用,因为相应的功能 在 Linux 内核 v5.0 及更高版本中删除。 使用 cgroups v2 时,这些选项是使用 'io.weight 实现的。docker run --blkio-weightdocker run --blkio-weight-device--blkio-weight

内核内存限制

在版本:v20.10 中已移除版本:v23.0 中移除

不再支持指定内核内存限制 () 因为 Linux 内核在 v5.4 中弃用了 kmem.limit_in_bytes。 OCI 运行时规范现在标记此选项(以及 ) 显示为 “NOT RECOMMENDED”, 和 OCI 运行时(例如)不再支持此选项。docker run --kernel-memory--kernel-memory-tcprunc

Docker API v1.42 及更高版本现在在设置此选项时忽略此选项。旧版本的 API 继续接受该选项,但根据使用的 OCI 运行时,可能会 不生效。

注意

虽然 OCI 运行时规范尚未在 Docker 中弃用,但它也 弃用了该选项。当使用 as 时 runtime 时,此选项无效。Linux 内核没有明确地 弃用此功能,问题中有一个跟踪票证 tracker 来确定是否应恢复此选项,或者此选项是否为 监督 Linux 内核维护者(参见 opencontainers/runc#3174)。memory.kmem.tcp.limit_in_bytesruncrunc

该选项仅支持 cgroups v1, 并且在使用 cgroups v2 运行的安装中不可用。此选项为 仅受 API 支持,不在命令行上公开。memory.kmem.tcp.limit_in_bytesdocker

使用集群存储的经典 Swarm 和 Overlay 网络

在版本:v20.10 中已移除版本:v23.0 中移除

独立(“经典”)Swarm 已被弃用,随之而来的是 overlay 使用外部键/值存储的网络。相应的 、 和 daemon 选项已被删除。--cluster-advertise--cluster-store--cluster-store-opt

支持旧版 ~/.dockercfg 配置文件

在版本:v20.10 中已移除版本:v23.0 中移除

直到 v1.7.0 的 Docker CLI 都使用该文件来存储凭据 向注册表进行身份验证后 ()。Docker v1.7.0 取代了这个 文件替换为新的 CLI 配置文件,该文件位于 .什么时候 实现新的配置文件时,旧文件(和文件格式)被保留 作为后备,以帮助现有用户迁移到新文件。~/.dockercfgdocker login~/.docker/config.json

鉴于旧文件格式鼓励不安全的凭据存储 (凭证以未加密方式存储),并且此后没有 CLI 版本 Docker v1.7.0 已经创建了这个文件,支持这个文件,它的格式有 已被删除。

实验性 CLI 功能的配置选项

在版本:v19.03 中已弃用

在版本:v23.0 中删除

CLI 配置文件中的环境变量和相应字段已弃用。实验性功能包括 ,并且这些配置选项不再起作用。DOCKER_CLI_EXPERIMENTALexperimental

从 v23.0 开始,Docker CLI 不再为客户端打印 ,并且该字段已从 JSON 中删除 格式。Experimentaldocker version

CLI 插件支持

在版本:v20.10 中已弃用

CLI 插件 API 现在标记为已弃用。

Dockerfile 旧版 ENV 名称值语法

在版本:v20.10 中已弃用

Dockerfile 指令允许使用 或 设置值。后一种 () 形式可能不明确,例如, 下面定义了一个值为 , 但可能打算设置三个环境变量:ENVENV name=valueENV name valueENV name valueONE"TWO= THREE=world"

ENV ONE TWO= THREE=world

此格式也不允许在 Dockerfile 的单行中设置多个环境变量。ENV

不建议使用该语法,将来可能会将其删除 释放。鼓励用户更新其 Dockerfile 以使用语法,例如:ENV name valueENV name=value

ENV ONE="" TWO="" THREE="world"

docker build --stream 标志(实验性)

已在 v20.10 版本中删除 在版本:v20.10 中删除

Docker v17.07 引入了一个实验性标志,该标志上 允许将 build-context 增量发送到守护进程,而不是 无条件地发送整个 build-context。--streamdocker build

此功能已作为 BuildKit 的一部分重新实现,它使用流式处理 默认情况下,该选项将在使用 Classic Builder 时被忽略, 而是打印弃用警告。--stream

对于想要使用此功能的用户,建议通过设置 环境变量或通过守护程序或 CLI 配置 文件。DOCKER_BUILDKIT=1

fluentd-async-connect log opt

在版本:v20.10 中已弃用

fluentd 日志记录驱动程序的选项已弃用,取而代之的是 --log-opt fluentd-async。 如果使用 old 选项,则守护进程日志中会记录弃用消息:--log-opt fluentd-async-connect

fluent#New: AsyncConnect is now deprecated, use Async instead

鼓励用户今后使用该选项作为支持 ,将在将来的发行版中删除。fluentd-async

使用镜像清单 v2 架构 1 推送和拉取

在版本:v19.03 中已弃用

在版本:v26.0 中默认禁用

版本中删除的目标:v27.0

镜像清单 v2 架构 1 和“Docker 镜像 v1”格式已弃用,取而代之的是 v2 架构 2OCI 镜像规范格式。

不应再使用这些旧格式,建议用户 更新镜像以使用当前格式,或升级到更新镜像。 从 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 中添加,允许重新启用对这些镜像格式的支持 在守护进程中。此环境变量必须在 守护程序的环境(例如,通过 systemd 覆盖文件)。 支持环境变量 将在 Docker v27.0 中删除,之后此功能将被永久删除。DOCKER_ENABLE_DEPRECATED_PULL_SCHEMA_1_IMAGEDOCKER_ENABLE_DEPRECATED_PULL_SCHEMA_1_IMAGE

docker engine 子命令

在版本:v19.03 中已弃用

在版本:v20.10 中删除

、 和 提供了升级 Docker Community 引擎的替代安装方法 到 Docker Enterprise,使用 Docker Engine 的基于镜像的发行版。docker engine activatedocker engine checkdocker engine update

此功能仅在 Linux 上可用,并且仅在本地节点上执行时可用。 鉴于此功能的局限性,以及该功能未得到广泛采用, 子命令将被删除,以便通过 标准包管理器。docker engine

顶级 docker deploy 子命令(实验性)

在版本:v19.03 中已弃用

在版本:v20.10 中删除

顶级命令(使用 “Docker Application Bundle” (.dab) 文件格式在 Docker 1.13 中作为实验性功能引入 / 17.03 中,但被使用子命令的 Docker Compose 文件支持所取代。docker deploydocker stack deploy

使用“DAB”文件的 Docker 堆栈部署(实验性)

在版本:v19.03 中已弃用

在版本:v20.10 中删除

没有对此功能进行任何开发,也没有积极使用该文件 格式、对 DAB 文件格式和顶级命令的支持 (在 19.03 中默认隐藏)将被删除,以支持使用 Compose Files。docker deploydocker stack deploy

支持 overlay2.override_kernel_check 存储选项

在版本:v19.03 中已移除在版本:v24.0 中移除

此守护程序配置选项禁用了所使用的 Linux 内核版本检查 来检测内核是否支持具有多个较低目录的 OverlayFS,即 overlay2 存储驱动程序需要。从 Docker v19.03.7 开始, 检测功能得到改进,不再依赖于内核版本,因此 选项。

AuFS 存储驱动程序

在版本:v19.03 中已移除在版本:v24.0 中移除

存储驱动程序已被弃用,取而代之的是 ,并且已被 在 Docker Engine v24.0 中删除。存储驱动程序的用户必须 在升级之前迁移到其他存储驱动程序,例如 到 Docker Engine v24.0。aufsoverlay2aufsoverlay2

存储驱动程序有助于在没有 支持 OverlayFS,例如 Ubuntu 14.04 LTS,它最初随 一个 3.14 内核。aufs

现在,Ubuntu 14.04 不再是 Docker 支持的发行版,并且可供所有支持的发行版使用(因为它们要么在内核 4.x 上,要么具有 支持向后移植的多个 lowerdirs),没有理由继续 维护存储驱动程序。overlay2aufs

旧版覆盖存储驱动程序

已在 v18.09 版本中删除 在版本:v24.0 中移除

存储驱动程序已弃用,取而代之的是存储 驱动程序,它具有 的所有优点,而没有其限制(过度的 inode 消耗)。旧版存储驱动程序已在 Docker 引擎 v24.0。在升级到 Docker Engine v24.0 之前,存储驱动程序的用户应迁移到存储驱动程序。overlayoverlay2overlayoverlayoverlayoverlay2

传统存储驱动程序允许使用 overlayFS 支持的文件系统 在低于 v4.x 的内核上。现在所有受支持的发行版都能够运行(因为它们要么在内核 4.x 上,要么支持多个 lowerdirs backported),没有理由继续维护 storage driver。overlayoverlay2overlay

Device mapper 存储驱动程序

在版本:v18.09 中已弃用版本:v23.0 中默认禁用 在版本:v25.0 中删除

存储驱动程序已被弃用,取而代之的是 ,并且具有 已在 Docker Engine v25.0 中删除。存储驱动程序的用户 在升级之前,必须迁移到其他存储驱动程序,例如 到 Docker Engine v25.0。devicemapperoverlay2devicemapperoverlay2

存储驱动程序有助于在较旧的 (3.x) 内核上运行 Docker 不支持其他存储驱动程序(例如 overlay2 或 btrfs)。devicemapper

现在,所有支持的发行版都添加了对 的支持(原样 要么在内核 4.x 上,要么支持向后移植多个 lowerdir),则 没有理由继续维护 Storage 驱动程序。overlay2devicemapper

在引擎标签中使用保留命名空间

在版本:v18.06 中已废弃

在版本版中删除:v20.10

命名空间、 和 引擎标签 总是被记录为保留,但从未有任何执行。com.docker.*io.docker.*org.dockerproject.*

现在,使用这些命名空间将导致引擎日志中出现警告,以阻止其 use,并在 v20.10 及更高版本中出错。

--disable-legacy-registry override 守护程序选项

在版本:v17.12 中禁用

在版本版中删除:v19.03

该标志在 Docker 17.12 中被禁用,并将打印 使用时出错。要打印此错误,标志本身仍然存在, 但隐藏了。该标志已在 Docker 19.03 中删除。--disable-legacy-registry

与 V1 注册表交互

在版本:v17.06 中默认禁用

在版本版中删除:v17.12

版本 1.8.3 添加了一个标志 (),该标志可防止 来自 、 的 Docker 守护程序和针对 v1 的操作 登记处。虽然默认情况下处于启用状态,但这表示要弃用 v1 协议。--disable-legacy-registry=falsepullpushlogin

在 1.13 中,删除了对公共注册表的 v1 协议的支持。任何 使用 v1 的镜像配置应更新为使用 v2 注册表镜像

从 Docker 17.12 开始,已删除对 V1 注册表的支持,并且该标志不能再使用,并且将无法 设置后启动。--disable-legacy-registrydockerd

异步服务创建和服务更新为默认值

Deprecated 在 Release: v17.05 中

在版本:v17.10 中默认禁用

Docker 17.05 添加了一个可选选项,用于使 和 同步工作。这 选项将在 Docker 17.10 中默认启用,此时该标志可用于使用以前的(异步)行为。--detach=falsedocker service createdocker service update--detach

此选项的默认值也将在 Docker 17.10 中相应地更改。docker service rollbackdocker service scale

dockerd 上的 -g--graph 标志

Deprecated 在 Release: v17.05 中

在版本版中删除:v23.0

or 命令的 or 标志为 用于指示存储持久数据和资源的目录 配置,并已替换为更具描述性的标志。这些标记在 v17.05 中已弃用和隐藏,并在 v23.0 中删除。-g--graphdockerddocker daemon--data-root

NetworkSettings 中的顶级网络属性

Deprecated 版本:v1.13.0

版本中删除的目标:v17.12

检查容器时,包含顶级信息 关于默认 (“bridge”) 网络;NetworkSettings

EndpointID和。GatewayGlobalIPv6AddressGlobalIPv6PrefixLenIPAddressIPPrefixLenIPv6GatewayMacAddress

这些属性已弃用,取而代之的是 中的每个网络属性。这些属性已在 Docker 1.9 的 1.9 版本,但为了向后兼容而保留。NetworkSettings.Networks

有关详细信息,请参阅 #17538 信息。

/images/json 端点的 filter 选项

Deprecated 版本:v1.13.0

在版本版中删除:v20.10

按引用筛选镜像列表的选项(name 或 name:tag) 现在实现为名为 .filterreference

repository:shortid 镜像引用

Deprecated 版本:v1.13.0

在版本版中删除:v17.12

引用镜像的语法很少使用, 与标签引用冲突,并且可能与摘要引用混淆。repository:shortid

已删除对引用镜像的符号的支持 在 Docker 17.12 中。repository:shortid

docker daemon 子命令

Deprecated 版本:v1.13.0

在版本版中删除:v17.12

守护进程被移动到单独的二进制 () 中,应该改用它。dockerd

引擎标签中值冲突的重复键

Deprecated 版本:v1.13.0

在版本版中删除:v17.12

当设置值冲突的重复键时,会产生错误,并且守护进程 将无法启动。

Dockerfile 中的 MAINTAINER

Deprecated 版本:v1.13.0

MAINTAINER是一种早期的非常有限的形式,应该使用它。LABEL

没有版本的 API 调用

Deprecated 版本:v1.13.0

版本中删除的目标:v17.12

应为所有 API 调用提供 API 版本,以确保与 未来的 Engine 版本。例如,您现在必须请求 ,而不仅仅是请求 URL 。/containers/json/v1.25/containers/json

不支持 overlay/overlay2 d_type备份文件系统

Deprecated 版本:v1.13.0

在版本版中删除:v17.12

如果备份 文件系统不支持 .例如,如果 XFS 使用 option 进行格式化,则 XFS 不支持。d_typed_typeftype=0

已删除对这些设置的支持,Docker v23.0 及更高版本现在无法 start,当尝试在 backing 文件系统。overlay2overlayd_type

有关详细信息,请参阅 #27358

在版本:v1.12.0 中已弃用

在版本版中删除:v20.10

和 选项已弃用。 使用 and 代替。docker search --automateddocker search --starsdocker search --filter=is-automated=<true|false>docker search --filter=stars=...

--help-h 简写

废弃于版本: v1.12.0

版本中删除目标:v17.09

简写 () 比在 Linux 上更不常见,因此不能使用 在所有子命令上(由于它与 / 在 )。因此,速记没有印在 “usage” 子命令的输出,也没有记录,现在标记为 “deprecated”。-h--help-h--hostnamedocker create-h

docker login 上的 -e--email 标志

在版本:v1.11.0 中已弃用

在版本版中删除:v17.06

如果给定的用户名不存在,则不再自动向目标注册表注册帐户。由于此更改,email 标志不再是必需的,并且将被弃用。docker login

docker run--security-opt 标志的分隔符 (

在版本:v1.11.0 中已弃用

版本中删除的目标:v17.06

该标志不再使用冒号分隔符 () 来划分键和值,它使用等号 () 与其他类似标志保持一致,例如 .--security-opt:=--storage-opt

API 中的事件字段不明确

v1.10.0 版中已弃用

字段 和 events API 中的字段已被弃用,取而代之的是更丰富的结构。 有关新格式,请参阅事件 API 文档。IDStatusFrom

docker 标记上的 -f 标志

v1.10.0 版中已弃用

在版本版中删除:v1.12.0

为了使各种命令之间的标记保持一致,该命令上的标志已被弃用。不再需要指定将标记从一个镜像移动到另一个镜像。如果缺少标志并且指定的标记已在使用中,则也不会生成错误。docker-fdocker tag-fdocker-f

API 容器启动时的 HostConfig

v1.10.0 版中已弃用

在版本版中删除:v1.12.0

不推荐使用 to 来传递 to 以支持 在容器创建时定义它 ()。HostConfigPOST /containers/{name}/startPOST /containers/create

docker ps 上的 --before--since 标志

v1.10.0 版中已弃用

在版本版中删除:v1.12.0

和 选项已弃用。 使用 and 代替。docker ps --beforedocker ps --sincedocker ps --filter=before=...docker ps --filter=since=...

特定于驱动程序的日志标记

废弃于版本: v1.9.0

在版本版中删除:v1.12.0

日志标签现在以标准方式跨不同的日志记录驱动程序生成。 因此,特定于驱动程序的日志标记选项 和 已被弃用,取而代之的是 generic 选项。syslog-taggelf-tagfluentd-tagtag

$ docker --log-driver=syslog --log-opt tag="{{.ImageName}}/{{.Name}}/{{.ID}}"

Docker 内容信任 ENV 密码短语变量名称更改

废弃于版本: v1.9.0

在版本版中删除:v1.12.0

从 1.9 开始,Docker Content Trust Offline 密钥已重命名为 Root key,Tagging key 已重命名为 Repository key。由于此次重命名,我们还更改了相应的环境变量

  • DOCKER_CONTENT_TRUST_OFFLINE_PASSPHRASE 现在被命名为 DOCKER_CONTENT_TRUST_ROOT_PASSPHRASE
  • DOCKER_CONTENT_TRUST_TAGGING_PASSPHRASE 现在命名为 DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE

/containers/(id 或 name)/copy 端点

1.8.0 版中已弃用

在版本版中删除:v1.12.0

端点已弃用,取而代之的是 。/containers/(id or name)/copy/containers/(id or name)/archive

LXC 内置执行驱动程序

1.8.0 版中已弃用

在版本版中删除:v1.10.0

已删除内置的 LXC 执行驱动程序、lxc-conf 标志和 API 字段。

旧命令行选项

1.8.0 版中已弃用

在版本版中删除:v1.10.0

标志 和 已弃用。请改用单独的二进制文件。-d--daemondockerd

某些命令行选项的以下单破折号 () 变体 已弃用并替换为双破折号选项 ():-opt--opt

  • docker attach -nostdin
  • docker attach -sig-proxy
  • docker build -no-cache
  • docker build -rm
  • docker commit -author
  • docker commit -run
  • docker events -since
  • docker history -notrunc
  • docker images -notrunc
  • docker inspect -format
  • docker ps -beforeId
  • docker ps -notrunc
  • docker ps -sinceId
  • docker rm -link
  • docker run -cidfile
  • docker run -dns
  • docker run -entrypoint
  • docker run -expose
  • docker run -link
  • docker run -lxc-conf
  • docker run -n
  • docker run -privileged
  • docker run -volumes-from
  • docker search -notrunc
  • docker search -stars
  • docker search -t
  • docker search -trusted
  • docker tag -force

以下双破折号选项已弃用,没有替代选项:

  • docker run --cpuset
  • docker run --networking
  • docker ps --since-id
  • docker ps --before-id
  • docker search --trusted

1.5.0 版中已弃用

在版本版中删除:v1.12.0

删除了单破折号 (),取而代之的是双破折号-help--help

dockerd 上的 --api-enable-cors 标志

废弃于版本: v1.6.0

在版本版中删除:v17.09

该标志自 v1.6.0 起已弃用。请改用 flag。--api-enable-cors--api-cors-header

docker commit 上的 --run 标志

v0.10.0 版中已废弃

在版本版中删除:v1.13.0

命令的标志(及其简短版本)已被弃用 允许传递命令的标志。--rundocker commit-run--changesDockerfile

docker import 中的三个参数形式

Deprecated 在 Release: v0.6.7

在版本版中删除:v1.12.0

该命令格式自 2013 年 11 月起已弃用。它不再受支持。docker importfile|URL|- [REPOSITORY [TAG]]