已弃用的 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 版
荒废的ContainerContainerConfig镜像检查中的字段25.0 版26.0 版
荒废的弃用旧版 API25.0 版26.0 版
删除network Aliases 字段中的容器短 ID25.0 版26.0 版
荒废的IsAutomated 字段和is-automated筛选docker search25.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 name value语法20.10 版-
删除docker build --stream标志 (实验性)20.10 版20.10 版
荒废的fluentd-async-connect对数 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 版
删除docker stack deploy使用“DAB”文件(实验性)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-registryoverride daemon 选项17.12 版19.03 版
删除与 V1 注册表交互17.06 版17.12 版
删除异步service createservice update作为默认值17.05 版17.10 版
删除-g--graph标志开启dockerd17.05 版23.0 版
荒废的NetworkSettings 中的顶级网络属性1.13 版17.12 版
删除filter选项/images/json端点1.13 版20.10 版
删除repository:shortid镜像引用1.13 版17.12 版
删除docker daemon子命令1.13 版17.12 版
删除引擎标签中值冲突的重复键1.13 版17.12 版
荒废的MAINTAINER在 Dockerfile 中1.13 版-
荒废的没有版本的 API 调用1.13 版17.12 版
删除在没有d_type支持 overlay/overlay21.13 版17.12 版
删除--automated--stars标志开启docker search1.12 版20.10 版
荒废的-h的简写--help1.12 版17.09 版
删除-e--email标志开启docker login1.11 版17.06 版
荒废的分隔符 (:) 的--security-opt标记docker run1.11 版17.06 版
荒废的API 中的事件字段不明确1.10 版-
删除-f标记docker tag1.10 版1.12 版
删除API 容器启动时的 HostConfig1.10 版1.12 版
删除--before--since标志开启docker ps1.10 版1.12 版
删除特定于驱动程序的日志标记1.9 版1.12 版
删除Docker 内容信任ENVPassPhrase 变量名称更改1.9 版1.12 版
删除/containers/(id or name)/copy端点1.8 版1.12 版
删除LXC 内置执行驱动程序1.8 版1.10 版
删除旧命令行选项1.8 版1.10 版
删除--api-enable-cors标记dockerd1.6 版17.09 版
删除--run标记docker commit0.10 版1.13 版
删除三个参数形成docker import0.6.7 版1.12 版

镜像检查中的非标准字段

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

Config字段返回,如docker image inspect(由 这GET /images/{name}/jsonAPI 端点)返回其他字段,这些字段是 不是镜像配置的一部分,也不是 Docker 镜像规范OCI 镜像规范的一部分。

这些字段永远不会设置(并且始终返回类型的默认值), 但在留空时,响应中不会省略。由于这些字段不是 旨在作为镜像配置响应的一部分,它们已被弃用, 并将在下一个版本的 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。一DOCKERD_DEPRECATED_GRAPHDRIVER_PLUGINS环境变量 在 v27.0 中提供以重新启用该功能。此环境变量必须 在守护程序的环境中设置为非空值。

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

API CORS 标头

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

api-cors-headerdocker 守护进程的配置选项不安全,则 ,因此已弃用并计划删除。 错误地设置此选项可能会留下机会之窗 用于守护程序接受未经身份验证的跨域请求。

从 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=falseCLI 标志 如果守护程序还配置为接受通过 TCP 的远程连接,则会导致守护程序无法启动。 这也适用于daemon.json.

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

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

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

ContainerContainerConfig镜像检查中的字段

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

ContainerContainerConfig字段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 版本,而在此之前的客户端使用的是固定的 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

环境变量 (DOCKER_MIN_API_VERSION),它允许 在守护程序中重新启用较旧的 API 版本。此环境变量必须 在守护程序的环境中设置(例如,通过 systemd 覆盖 文件),并将指定的 守护程序 (1.12或更高版本,或者1.24或更高版本)。

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

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

network Aliases 字段中的容器短 ID

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

Aliases字段返回者docker inspect包含容器 Short 容器启动后的 ID。此行为在 v25.0 中已弃用,但 保留到下一个版本 v26.0。从该版本开始,Aliases字段将仅包含通过docker container createdocker run--network-alias.

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

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

is_automated字段已被 Docker Hub 的搜索 API 弃用。 因此,IsAutomated镜像搜索中的字段将始终处于设置 自false将来,搜索 “is-automated=true” 将不会产生 结果。

AUTOMATED列已从默认docker searchdocker image searchv25.0 中的输出,以及相应的IsAutomated模板选项将在 v26.0 中删除。

Logentries 日志记录驱动程序

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

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

守护进程的 OOM-score 调整

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

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

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

默认情况下,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 build.通过此更改,docker build现在公开所有高级功能 ,以前只能通过docker buildx子命令。

安装docker命令行界面 使用我们的.deb.rpm包和静态链接的Binaries 两者都在download.docker.com,并通过docker/buildx-bin镜像在 Docker Hub 上。请参阅 Buildx 部分 有关安装 Buildx 组件的详细说明。

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

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

BuildKit 尚未提供对构建 Windows 镜像的支持,并且docker build继续使用经典构建器构建原生 Windows 镜像。

旧版构建器回退

在版本:v23.0 中已弃用

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

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

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

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/

如果dockerCLI 使用静态Binaries 并且 Buildx 组件未安装或未正确安装。此回退 将在未来的版本中删除,因此我们建议安装 Buildx 组件并使用 BuildKit 进行构建,或者选择退出使用 BuildKit 与DOCKER_BUILDKIT=0.

如果您选择使用 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环境变量回退到旧版构建器, 或选择退出使用 BuildKitDOCKER_BUILDKIT=0.

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

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

在版本:v23.0 中删除

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

支持加密的 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 的stackcontext命令已从 CLI 以及与此功能相关的选项现在要么被忽略,要么可能被忽略 产生错误。

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

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

docker context inspect子命令不再包含 信息StackOrchestratorKubernetesendpoints 的新上下文。

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

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

DOCKER_STACK_ORCHESTRATOR,DOCKER_ORCHESTRATORKUBECONFIG环境 变量以及stackOrchestrator选项中的~/.docker/config.jsonCLI 配置文件不再使用,并被忽略。

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

在版本:v20.10 中已弃用

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

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

请注意,此回退仅解决docker pull.其他命令 如docker stack deploy,或使用containerd将继续 失败。

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

内核内存限制

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

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

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

注意

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

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

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

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

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

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

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

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

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

实验性 CLI 功能的配置选项

在版本:v19.03 中已弃用

在版本:v23.0 中删除

DOCKER_CLI_EXPERIMENTALenvironment 变量和相应的experimental字段已弃用。实验性功能包括 ,并且这些配置选项不再起作用。

从 v23.0 开始,Docker CLI 不再打印Experimental对于客户 在docker version,并且该字段已从 JSON 中删除 格式。

CLI 插件支持

在版本:v20.10 中已弃用

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

Dockerfile 旧版ENV name value语法

在版本:v20.10 中已弃用

The DockerfileENV指令允许使用ENV name=valueENV name value.后者 (ENV name value) 表单可能不明确,例如, 下面定义了一个 env 变量 (ONE) 的"TWO= THREE=world", 但可能打算设置三个环境变量:

ENV ONE TWO= THREE=world

此格式也不允许在单个ENV行。

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

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

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

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

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

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

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

fluentd-async-connect对数 Opt

在版本:v20.10 中已弃用

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

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_ENABLE_DEPRECATED_PULL_SCHEMA_1_IMAGE) 是 在 Docker v26.0 中添加,允许重新启用对这些镜像格式的支持 在守护进程中。此环境变量必须在 守护程序的环境(例如,通过 systemd 覆盖文件)。 支持DOCKER_ENABLE_DEPRECATED_PULL_SCHEMA_1_IMAGE环境变量 将在 Docker v27.0 中删除,之后此功能将被永久删除。

docker engine子命令

在版本:v19.03 中已弃用

在版本:v20.10 中删除

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

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

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

在版本:v19.03 中已弃用

在版本:v20.10 中删除

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

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 中移除

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

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

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

旧版覆盖存储驱动程序

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

overlaystorage 驱动程序已弃用,取而代之的是overlay2存储 驱动程序,它具有overlay,而没有其限制(过度的 inode 消耗)。遗产overlay存储驱动程序已在 中删除 Docker 引擎 v24.0。的overlaystorage 驱动程序应迁移到overlay2storage 驱动程序。

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

Device mapper 存储驱动程序

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

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

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

现在,对overlay2已添加到所有受支持的发行版中(按原样显示) 要么在内核 4.x 上,要么支持向后移植多个 lowerdir),则 没有理由继续维护devicemapperstorage 驱动程序。

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

在版本:v18.06 中已废弃

在版本版中删除:v20.10

命名空间com.docker.*,io.docker.*org.dockerproject.*在发动机标签中 总是被记录为保留,但从未有任何执行。

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

--disable-legacy-registryoverride daemon 选项

在版本:v17.12 中禁用

在版本版中删除:v19.03

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

与 V1 注册表交互

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

在版本版中删除:v17.12

版本 1.8.3 添加了一个标志 (--disable-legacy-registry=false),这会阻止 Docker 守护程序pull,pushlogin针对 v1 的作 登记处。虽然默认情况下处于启用状态,但这表示要弃用 v1 协议。

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

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

异步service createservice update作为默认值

Deprecated 在 Release: v17.05 中

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

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

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

-g--graph标志开启dockerd

Deprecated 在 Release: v17.05 中

在版本版中删除:v23.0

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

NetworkSettings 中的顶级网络属性

Deprecated 版本:v1.13.0

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

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

EndpointID,Gateway,GlobalIPv6Address,GlobalIPv6PrefixLen,IPAddress,IPPrefixLen,IPv6GatewayMacAddress.

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

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

filter选项/images/json端点

Deprecated 版本:v1.13.0

在版本版中删除:v20.10

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

repository:shortid镜像引用

Deprecated 版本:v1.13.0

在版本版中删除:v17.12

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

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

docker daemon子命令

Deprecated 版本:v1.13.0

在版本版中删除:v17.12

守护进程将移动到单独的Binaries (dockerd),应改用。

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

Deprecated 版本:v1.13.0

在版本版中删除:v17.12

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

MAINTAINER在 Dockerfile 中

Deprecated 版本:v1.13.0

MAINTAINERLABEL应该改用。

没有版本的 API 调用

Deprecated 版本:v1.13.0

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

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

在没有d_type支持 overlay/overlay2

Deprecated 版本:v1.13.0

在版本版中删除:v17.12

如果备份 文件系统不支持d_type.例如,XFS 不支持d_type如果格式为ftype=0选择。

已删除对这些设置的支持,Docker v23.0 及更高版本现在无法 start 时尝试使用overlay2overlaystorage 驱动程序 没有d_type支持。

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

在版本:v1.12.0 中已弃用

在版本版中删除:v20.10

docker search --automateddocker search --stars选项已弃用。 用docker search --filter=is-automated=<true|false>docker search --filter=stars=...相反。

-h的简写--help

废弃于版本: v1.12.0

版本中删除目标:v17.09

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

-e--email标志开启docker login

在版本:v1.11.0 中已弃用

在版本版中删除:v17.06

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

分隔符 (:) 的--security-opt标记docker run

在版本:v1.11.0 中已弃用

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

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

API 中的事件字段不明确

v1.10.0 版中已弃用

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

-f标记docker tag

v1.10.0 版中已弃用

在版本版中删除:v1.12.0

要使标记在各种docker命令、-f标志docker tag命令已弃用。不再需要指定-f将标签从一个镜像移动到另一个镜像。也不会docker如果-f标志缺失,并且指定的标记已在使用中。

API 容器启动时的 HostConfig

v1.10.0 版中已弃用

在版本版中删除:v1.12.0

传递HostConfigPOST /containers/{name}/start已弃用,取而代之的是 在容器创建时定义它 (POST /containers/create).

--before--since标志开启docker ps

v1.10.0 版中已弃用

在版本版中删除:v1.12.0

docker ps --beforedocker ps --since选项已弃用。 用docker ps --filter=before=...docker ps --filter=since=...相反。

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

废弃于版本: v1.9.0

在版本版中删除:v1.12.0

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

$ 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 or 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--daemon已弃用。使用单独的dockerdbinary 来代替。

以下单划线 (-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

--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

标志--rundocker commit命令(及其简短版本-run) 被弃用,取而代之的是 的--changes允许传递Dockerfile命令。

三个参数形成docker import

Deprecated 在 Release: v0.6.7

在版本版中删除:v1.12.0

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

APP信息