已弃用的引擎功能

本页概述了 Engine 中已弃用的功能。不包括包装和支持的 (Linux) 发行版的更改。要了解有关 Linux 发行版的支持终止的信息,请参阅 发行说明

功能弃用政策

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

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

已弃用的引擎功能

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

  • 已弃用:该功能被标记为“已弃用”,不应再使用。该功能可能会在未来版本中被删除、禁用或更改行为。“已弃用”列包含该功能被标记为已弃用的版本,而“删除”列包含该功能将被删除的暂定版本。如果“删除”栏中没有包含任何版本,则表示版本尚未确定。
  • 已删除:该功能已被删除、禁用或隐藏。有关详细信息,请参阅链接部分。某些功能被“软”弃用,这意味着它们仍然具有向后兼容性的功能,并允许用户迁移到替代方案。在这种情况下,可能会打印警告,用户不应依赖此功能。
地位特征已弃用消除
已弃用未经身份验证的 TCP 连接v26.0v27.0
已弃用ContainerContainerConfig图像检查中的字段v25.0v26.0
已弃用弃用旧版 API 版本v25.0v26.0
已删除网络别名字段中的容器短 IDv25.0v26.0
已弃用IsAutomated 字段,以及 docker 搜索上的“is-automated”过滤器v25.0v26.0
已删除logentries 日志记录驱动程序v24.0v25.0
已删除守护进程的 OOM 分数调整v24.0v25.0
已删除Buildkit 构建信息v23.0v24.0
已弃用Linux 镜像的旧版构建器v23.0-
已弃用遗留构建器后备v23.0-
已删除CentOS 7 和 RHEL 7 上的 Btrfs 存储驱动程序v20.10v23.0
已删除支持加密的 TLS 私钥v20.10v23.0
已删除Kubernetes 堆栈和上下文支持v20.10v23.0
已弃用从不合规的图像注册表中提取图像v20.10-
已删除Windows 上的 Linux 容器 (LCOW)v20.10v23.0
已弃用BLKIO 权重选项与 cgroups v1v20.10-
已删除内核内存限制v20.10v23.0
已删除使用外部键/值存储的经典 Swarm 和覆盖网络v20.10v23.0
已删除支持旧~/.dockercfg配置文件进行身份验证v20.10v23.0
已弃用CLI 插件支持v20.10-
已弃用Dockerfile 遗留ENV name value语法v20.10-
已删除docker build --stream标志(实验)v20.10v20.10
已弃用fluentd-async-connect日志选项v20.10-
已删除实验性 CLI 功能的配置选项v19.03v23.0
已弃用使用镜像清单 v2 模式进行推送和拉取 1v19.03v27.0
已删除docker engine子命令v19.03v20.10
已删除顶级docker deploy子命令(实验)v19.03v20.10
已删除docker stack deploy使用“dab”文件(实验)v19.03v20.10
已删除支持overlay2.override_kernel_check存储选项v19.03v24.0
已删除AuFS存储驱动v19.03v24.0
已删除传统的“覆盖”存储驱动程序v18.09v24.0
已删除设备映射器存储驱动程序v18.09v25.0
已删除在引擎标签中使用保留的命名空间v18.06v20.10
已删除--disable-legacy-registry覆盖守护进程选项v17.12v19.03
已删除与 V1 注册表交互v17.06v17.12
已删除异步service createservice update默认v17.05v17.10
已删除-g--graph旗帜dockerdv17.05v23.0
已弃用NetworkSettings 中的顶级网络属性v1.13v17.12
已删除filter/images/json端点参数v1.13v20.10
已删除repository:shortid图片参考v1.13v17.12
已删除docker daemon子命令v1.13v17.12
已删除引擎标签中具有冲突值的重复键v1.13v17.12
已弃用MAINTAINER在 Dockerfile 中v1.13-
已弃用没有版本的 API 调用v1.13v17.12
已删除d_type支持不支持overlay/overlay2的文件系统v1.13v17.12
已删除--automated--stars旗帜docker searchv1.12v20.10
已弃用-h简写为--helpv1.12v17.09
已删除-e--email旗帜docker loginv1.11v17.06
已弃用标志的分隔符 ( :)--security-optdocker runv1.11v17.06
已弃用API 中的事件字段不明确v1.10-
已删除-f标志开启docker tagv1.10v1.12
已删除API 容器启动时的 HostConfigv1.10v1.12
已删除--before--since旗帜docker psv1.10v1.12
已删除驱动程序特定的日志标签v1.9v1.12
已删除Docker 内容信任ENV密码变量名称更改v1.9v1.12
已删除/containers/(id or name)/copy终点v1.8v1.12
已删除LXC内置执行驱动程序v1.8v1.10
已删除旧的命令行选项v1.8v1.10
已删除--api-enable-cors标志开启dockerdv1.6v17.09
已删除--run标志开启docker commitv0.10v1.13
已删除三个参数形成于docker importv0.6.7v1.12

未经身份验证的 TCP 连接

在版本:v26.0 中已弃用 在版本:v27.0 中删除的目标

将 Docker 守护进程配置为侦听 TCP 地址将需要强制 TLS 验证。此更改旨在通过防止通过潜在不安全的网络对 Docker 守护程序进行未经授权的访问来确保安全通信。此强制性 TLS 要求适用于除tcp://localhost.

在版本 27.0 及更高版本中,如果守护程序也配置为接受通过 TCP 的远程连接,则指定--tls=false--tlsverify=falseCLI 标志会导致守护程序无法启动。这也适用于 中的等效配置选项daemon.json

为了方便通过 TCP 远程访问 Docker 守护程序,您需要实施 TLS 验证。这通过加密传输中的数据并提供相互身份验证的机制来保护连接。

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

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

图像检查中的 Container 和 ContainerConfig 字段

版本:v25.0 中已弃用 版本:v26.0 中删除的目标

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

弃用旧版 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 守护进程可能会更新到最新版本)发布,但并非所有客户端都是最新的,反之亦然)。对之前的 API 版本(由 Docker Daemon 的 EOL 版本提供的 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, please upgrade your client to a newer version

引入了一个环境变量 ( DOCKER_MIN_API_VERSION),允许在守护程序中重新启用旧的 API 版本。该环境变量必须在守护程序的环境中设置(例如,通过 systemd 覆盖文件),并且守护程序必须支持指定的 API 版本(1.12或在 Linux 上更高版本,或 1.24在 Windows 上更高版本)。

Docker Engine v26 中将永久删除对低于以下 API 版本的支持1.24,并且将在后续版本中逐步提高支持的最低 API 版本。

我们不建议依赖DOCKER_MIN_API_VERSION环境变量,除非在无法更新旧客户端且必须支持这些客户端的特殊情况下。

网络别名字段中的容器短 ID

在版本:v25.0 中弃用 在版本:v26.0 中删除

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

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

版本:v25.0 中已弃用 版本:v26.0 中删除的目标

Docker Hub 的搜索 API 已弃用“is_automated”字段。因此,IsAutomated图像搜索中的字段将始终设置为false将来,并且搜索“is-automated=true”将不会产生任何结果。

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

Logentries 日志记录驱动程序

在版本:v24.0 中弃用 在版本:v25.0 中删除

日志服务 SaaS 于 2022 年 11 月 15 日关闭,导致该日志驱动程序无法运行。用户不应再使用此日志记录驱动程序,该驱动程序已在 Docker 25.0 中删除。使用此日志记录驱动程序的现有容器在升级后将迁移为使用“本地”日志记录驱动程序。

守护进程的 OOM 分数调整

在版本: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子命令使用。

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

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

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

BuildKit(尚)不提供对构建 Windows 映像的支持,并 docker build继续使用经典构建器在 Windows 守护程序上构建本机 Windows 映像。

遗留构建器后备

版本中已弃用: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://docker.github.net.cn/go/buildx/

docker如果使用静态二进制文件安装 CLI,并且未安装或未正确安装 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://docker.github.net.cn/go/buildx/

我们建议 安装 Buildx 组件 以继续使用 BuildKit 进行构建,但用户也可以取消设置DOCKER_BUILDKIT环境变量以回退到旧版构建器,或者选择不将 BuildKit 与DOCKER_BUILDKIT=0.

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

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

在版本中删除:v23.0

btrfsCentOS 和 RHEL 上的存储驱动程序由 CentOS 和 RHEL 作为技术预览版提供,但自 Red Hat Enterprise Linux 7.4 版本起已弃用 ,在 CentOS 8 和 RHEL 8 中删除。btrfs建议 CentOS 上存储驱动程序的用户迁移到不同的存储驱动程序,例如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 中删除

在 Kubernetes 上弃用 Compose 后 ,stack和命令中对 Kubernetes 的支持context已从 cli 中删除,与此功能相关的选项现在要么被忽略,要么可能会产生错误。

以下命令行标志已从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_ORCHESTRATORDOCKER_ORCHESTRATOR和环境变量KUBECONFIG以及cli 配置文件stackOrchestrator中的选项~/.docker/config.json 不再使用并被忽略。

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

版本中已弃用: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 中删除

在 Windows 上运行 Linux 容器 (LCOW) 的实验性功能是在 Docker 17.09 中作为技术预览版引入的。虽然在推出后进行了许多增强,但该功能从未达到完整性,并且现在已经停止开发,转而支持在 WSL2 中的 Linux 上本机运行 docker。

我们鼓励想要在 Windows 主机上运行 Linux 工作负载的开发人员使用 Docker Desktop 和 WSL2

BLKIO 权重选项与 cgroups v1

版本中已弃用:v20.10

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

内核内存限制

在版本:v20.10 中弃用 在版本:v23.0 中删除

docker run --kernel-memory不再支持 指定内核内存 limit( ),因为 Linux 内核在 v5.4 中已弃用kmem.limit_in_bytes。 OCI 运行时规范现在将此选项(以及--kernel-memory-tcp)标记为 “不推荐”,并且 OCI 运行时runc不再支持此选项。

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

笔记

虽然 Docker 中尚未弃用,但 OCI 运行时规范也弃用了该memory.kmem.tcp.limit_in_bytes选项。当作为运行时使用时runc,该选项无效。 Linux 内核没有明确弃用此功能,并且runc问题跟踪器中有一个跟踪票证,以确定是否应恢复此选项,或者这是否是 Linux 内核维护者的疏忽(请参阅 opencontainers/runc#3174)。

memory.kmem.tcp.limit_in_bytes选项仅受 cgroups v1 支持,在运行 cgroups v2 的安装上不可用。此选项仅受 API 支持,不会在docker命令行上公开。

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

在版本:v20.10 中弃用 在版本:v23.0 中删除

独立(“经典”)Swarm 已被弃用,并且使用外部键/值存储的覆盖网络也已被弃用。相应的--cluster-advertise--cluster-store--cluster-store-optdaemon 选项已被删除。

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

在版本: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

CLI 配置文件中的环境变量和相应字段已弃用DOCKER_CLI_EXPERIMENTALexperimental默认情况下启用实验功能,这些配置选项不再起作用。

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

CLI 插件支持

版本中已弃用:v20.10

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

Dockerfile 旧版 ENV 名称值语法

版本中已弃用:v20.10

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

ENV ONE TWO= THREE=world

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

不鼓励使用该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。

fluidd-async-connect 日志选项

版本中已弃用:v20.10

不推荐使用--log-opt fluentd-async-connectfluidd 日志记录驱动程序的选项, 取而代之的是.如果使用旧选项,则会在守护程序日志中记录一条弃用消息:--log-opt fluentd-async

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

我们鼓励用户fluentd-async继续使用该选项,因为在未来的版本中将删除对旧选项的支持。

使用镜像清单 v2 模式进行推送和拉取 1

版本中已弃用:v19.03

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

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

映像清单 v2 架构 1 和“Docker Image 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://docker.github.net.cn/go/deprecated-image-specs/

Docker v26.0 中添加了一个环境变量 ( DOCKER_ENABLE_DEPRECATED_PULL_SCHEMA_1_IMAGE),允许在守护进程中重新启用对这些图像格式的支持。必须在守护程序环境中将此环境变量设置为非空值(例如,通过 systemd 覆盖文件)。DOCKER_ENABLE_DEPRECATED_PULL_SCHEMA_1_IMAGEDocker v27.0 中将删除对环境变量的支持,此后此功能将被永久删除。

docker 引擎子命令

版本中已弃用:v19.03

在版本中删除:v20.10

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

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

顶级 docker 部署子命令(实验)

版本中已弃用:v19.03

在版本中删除:v20.10

顶级docker deploy命令(使用“Docker 应用程序包”(.dab) 文件格式)作为 Docker 1.13 / 17.03 中的实验功能引入,但已被使用子命令的 Docker Compose 文件支持所取代docker stack deploy

使用“dab”文件进行 docker stack 部署(实验性)

版本中已弃用:v19.03

在版本中删除:v20.10

由于此功能尚未开发,也没有主动使用该文件格式,因此将删除对 DAB 文件格式和顶级 docker 部署命令(在 19.03 中默认隐藏)的支持,转而docker stack deploy 使用 compose 文件。

支持override2.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 中删除。在升级到 Docker Engine v24.0 之前,存储驱动程序的用户aufs必须迁移到不同的存储驱动程序,例如。overlay2

存储aufs驱动程序有助于在不支持 OverlayFS 的发行版上运行 Docker,例如最初附带 3.14 内核的 Ubuntu 14.04 LTS。

既然 Ubuntu 14.04 不再是 Docker 支持的发行版,并且overlay2 可用于所有受支持的发行版(因为它们要么在内核 4.x 上,要么支持向后移植的多个 lowerdirs),所以没有理由继续维护aufs存储司机。

旧版覆盖存储驱动程序

在版本:v18.09 中弃用 在版本:v24.0 中删除

存储overlay驱动程序已被弃用,取而代之的是overlay2存储驱动程序,它具有 的所有优点overlay,而没有其限制(过多的 inode 消耗)。overlayDocker Engine v24.0 中已删除旧存储驱动程序。存储驱动程序的用户overlayoverlay2在升级到 Docker Engine v24.0 之前迁移到存储驱动程序。

旧版overlay存储驱动程序允许在 4.x 之前的内核上使用 OverlayFS 支持的文件系统。现在所有受支持的发行版都能够运行overlay2 (因为它们要么在内核 4.x 上,要么支持向后移植的多个 lowerdirs),没有理由继续维护overlay存储驱动程序。

设备映射器存储驱动程序

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

存储devicemapper驱动程序已被弃用overlay2,并已在 Docker Engine v25.0 中删除。在升级到 Docker Engine v25.0 之前,存储驱动程序的用户devicemapper必须迁移到不同的存储驱动程序,例如。overlay2

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

现在,所有支持的发行版都添加了对存储驱动程序的支持overlay2(因为它们要么在内核 4.x 上,要么支持向后移植的多个 lowerdirs),没有理由继续维护devicemapper存储驱动程序。

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

版本中已弃用:v18.06

在版本中删除:v20.10

命名空间com.docker.*io.docker.*org.dockerproject.*in 引擎标签始终被记录为保留,但从未有任何强制执行。

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

--disable-legacy-registry 覆盖守护进程选项

版本中禁用: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 守护进程对 v1 注册表进行pullpush、 和操作。login虽然默认情况下启用,但这表明了弃用 v1 协议的意图。

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

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

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

版本中已弃用:v17.05

版本中默认禁用: v17.10

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

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

dockerd 上的 -g 和 --graph 标志

版本中已弃用:v17.05

在版本中删除:v23.0

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

NetworkSettings 中的顶级网络属性

版本中已弃用: v1.13.0

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

检查容器时,NetworkSettings包含有关默认(“桥接”)网络的顶级信息;

EndpointIDGatewayGlobalIPv6AddressGlobalIPv6PrefixLenIPAddressIPPrefixLenIPv6Gateway, 和MacAddress

这些属性已被弃用,取而代之的是 NetworkSettings.Networks.这些属性在 docker 1.9 中已被“弃用”,但为了向后兼容而保留。

请参阅 #17538了解更多信息。

/images/json 端点的过滤参数

版本中已弃用: v1.13.0

在版本中删除:v20.10

filter通过引用(名称或名称:标签)过滤图像列表的参数现在实现为常规过滤器,名为reference

存储库:shortid 图像参考

版本中已弃用: v1.13.0

在版本中删除:v17.12

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

repository:shortidDocker 17.12 中删除了对引用图像符号的支持。

docker 守护进程子命令

版本中已弃用: v1.13.0

在版本中删除:v17.12

该守护程序已移至单独的二进制文件 ( dockerd),并且应改为使用。

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

版本中已弃用: v1.13.0

在版本中删除:v17.12

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

Dockerfile 中的维护者

版本中已弃用: v1.13.0

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

没有版本的 API 调用

版本中已弃用: v1.13.0

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

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

支持没有 d_type 支持的文件系统 overlay/overlay2

版本中已弃用: v1.13.0

在版本中删除:v17.12

如果支持文件系统不支持,overlay 和overlay2 存储驱动程序将无法按预期工作d_type。例如,XFS不支持d_type 如果使用该ftype=0选项进行格式化。

对这些设置的支持已被删除,当尝试在没有支持的支持文件系统上使用overlay2或存储驱动程序时,Docker v23.0 及更高版本现在无法启动。overlayd_type

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

版本中已弃用: v1.12.0

在版本中删除:v20.10

docker search --automated选项docker search --stars已被弃用。使用docker search --filter=is-automated=<true|false>anddocker search --filter=stars=...代替。

-h --help 的简写

版本中已弃用: v1.12.0

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

简写 ( -h) 不像--helpLinux 上那么常见,并且不能用于所有子命令(因为它与-h/ --hostnameon 等冲突docker create)。因此,-h速记没有打印在子命令的“用法”输出中,也没有记录在案,现在被标记为“已弃用”。

docker 登录时的 -e 和 --email 标志

版本中已弃用: v1.11.0

在版本中删除: v17.06

如果给定的用户名不存在,docker login 命令将删除自动向目标注册表注册帐户的功能。由于此更改,不再需要电子邮件标志,并且将被弃用。

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

版本中已弃用: v1.11.0

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

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

API 中的事件字段不明确

版本中已弃用: v1.10.0

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

docker 标签上的 -f 标志

版本中已弃用: v1.10.0

版本中删除: v1.12.0

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

API 容器启动时的 HostConfig

版本中已弃用: v1.10.0

版本中删除: v1.12.0

不推荐传递HostConfigto ,而是在容器创建时定义它 ( )。POST /containers/{name}/startPOST /containers/create

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

版本中已弃用: v1.10.0

版本中删除: v1.12.0

docker ps --before选项docker ps --since已被弃用。使用docker ps --filter=before=...anddocker 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 Content Trust ENV 密码变量名称更改

版本中已弃用: v1.9.0

版本中删除: v1.12.0

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

  • DOCKER_CONTENT_TRUST_OFFLINE_PASSPHRASE 现已命名为 DOCKER_CONTENT_TRUST_ROOT_PASSPHRASE
  • DOCKER_CONTENT_TRUST_TAGGING_PASSPHRASE 现已命名为 DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE

/containers/(id 或 name)/复制端点

版本中已弃用: v1.8.0

版本中删除: v1.12.0

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

LXC内置执行驱动程序

版本中已弃用: v1.8.0

在版本中删除: v1.10.0

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

旧的命令行选项

版本中已弃用: v1.8.0

在版本中删除: v1.10.0

标志-d--daemon已被弃用,取而代之的是daemon子命令:

docker daemon -H ...

某些命令行选项的以下单破折号 ( -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

版本中已弃用: v1.5.0

版本中删除: v1.12.0

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

docker -help
docker [COMMAND] -help

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

版本中已弃用: v1.6.0

在版本中删除: v17.09

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

--在 docker 提交上运行标志

版本中已弃用: 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 月起已弃用。不再受支持。