弃用的 Docker Engine 功能

目录

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

功能弃用策略

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

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

弃用的引擎功能

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

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

    该功能可能会在未来版本中被删除、禁用或更改行为。“已弃用”列包含该功能被标记为弃用的版本,而“移除”列包含该功能预计被移除的暂定版本。如果“移除”列中未包含任何版本,则该版本尚未确定。

  • 已移除:该功能已被移除、禁用或隐藏。

    有关详细信息,请参阅链接部分。某些功能是“软”弃用的,这意味着它们为了向后兼容而保持功能,并允许用户迁移到替代方案。在这种情况下,可能会打印警告,用户不应依赖此功能。

状态特性已弃用移除
已弃用来自 inspect API 的镜像配置中的空/nil 字段v28.3v29.0
已弃用推送不可分发工件的配置v28.0v29.0
已弃用docker stopdocker restart 上的 --time 选项v28.0-
已移除镜像 inspect 中的非标准字段v27.0v28.2
已移除API CORS 头部v27.0v28.0
已移除Graphdriver 插件(实验性)v27.0v28.0
已弃用未认证的 TCP 连接v26.0v28.0
已移除镜像 inspect 中的 ContainerContainerConfig 字段v25.0v26.0
已移除弃用旧版 API 版本v25.0v26.0
已移除网络 Aliases 字段中的容器短 IDv25.0v26.0
已移除IsAutomated 字段以及 docker search 上的 is-automated 过滤器v25.0v28.2
已移除logentries 日志驱动v24.0v25.0
已移除守护程序的 OOM-score 调整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.10v28.2
已移除Windows 上的 Linux 容器 (LCOW)v20.10v23.0
已弃用使用 cgroups v1 的 BLKIO 权重选项v20.10-
已移除内核内存限制v20.10v23.0
已移除使用外部键/值存储的经典 Swarm 和 overlay 网络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.10v28.0
已移除实验性 CLI 功能的配置选项v19.03v23.0
已移除使用镜像清单 v2 schema 1 进行推送和拉取v19.03v28.2
已移除docker engine 子命令v19.03v20.10
已移除顶级 docker deploy 子命令(实验性)v19.03v20.10
已移除使用“dab”文件进行 docker stack deploy(实验性)v19.03v20.10
已移除支持 overlay2.override_kernel_check 存储选项v19.03v24.0
已移除AuFS 存储驱动v19.03v24.0
已移除旧版“overlay”存储驱动v18.09v24.0
已移除Device mapper 存储驱动v18.09v25.0
已移除在引擎标签中使用保留命名空间v18.06v20.10
已移除--disable-legacy-registry 覆盖守护程序选项v17.12v19.03
已移除与 V1 注册表交互v17.06v17.12
已移除默认情况下 service createservice update 异步执行v17.05v17.10
已移除dockerd 上的 -g--graph 标志v17.05v23.0
已弃用NetworkSettings 中的顶级网络属性v1.13v17.12
已移除/images/json 端点的 filter 选项v1.13v20.10
已移除repository:shortid 镜像引用v1.13v17.12
已移除docker daemon 子命令v1.13v17.12
已移除引擎标签中具有冲突值的重复键v1.13v17.12
已弃用Dockerfile 中的 MAINTAINERv1.13-
已弃用没有版本的 API 调用v1.13v17.12
已移除没有 d_type 支持的 overlay/overlay2 后备文件系统v1.13v17.12
已移除docker search 上的 --automated--stars 标志v1.12v20.10
已弃用--help 的简写 -hv1.12v17.09
已移除docker login 上的 -e--email 标志v1.11v17.06
已弃用docker run--security-opt 标志的分隔符(:v1.11v17.06
已弃用API 中模糊的事件字段v1.10-
已移除docker tag 上的 -f 标志v1.10v1.12
已移除API 容器启动时的 HostConfigv1.10v1.12
已移除docker ps 上的 --before--since 标志v1.10v1.12
已移除驱动程序特定的日志标签v1.9v1.12
已移除Docker Content Trust ENV 密码变量名称更改v1.9v1.12
已移除/containers/(id or name)/copy 端点v1.8v1.12
已移除LXC 内置 exec 驱动v1.8v1.10
已移除旧的命令行选项v1.8v1.10
已移除dockerd 上的 --api-enable-cors 标志v1.6v17.09
已移除docker commit 上的 --run 标志v0.10v1.13
已移除docker import 中的三个参数形式v0.6.7v1.12

来自 inspect API 的镜像配置中的空/nil 字段

在版本 v28.3 中弃用 计划在版本 v29.0 中移除

docker image inspect(以及 GET /images/{name}/json API 端点)返回的 Config 字段目前即使为空或 nil 也包含某些字段。从 Docker v29.0 开始,当这些字段包含空值或默认值时,将从 API 响应中省略以下字段

  • Cmd
  • Entrypoint
  • Env
  • Labels
  • OnBuild
  • 用户
  • WorkingDir

使用镜像 inspect API 的应用程序应更新以优雅地处理这些字段的缺失,将缺失字段视为具有其默认/空值。

对于对应于 Docker v29.0 的 API 版本,这些字段在为空时将被省略。在使用请求旧 API 版本的客户端时,它们将继续包含在内以实现向后兼容性。

推送不可分发工件的配置

在版本 v28.0 中弃用 计划在版本 v29.0 中移除

不可分发工件(也称为外部层)是在 Docker v1.12 中引入的,用于容纳 Windows 镜像,其 EULA 不允许通过 Microsoft 托管的注册表以外的注册表分发层。外部/不可分发层的概念在 oci#233 中被 OCI 分发规范采纳。这些限制后来放宽,允许通过非公共注册表分发这些镜像,为此在 Docker v17.0.6.0 中添加了配置。

2022 年,微软更新了 EULA 并取消了这些限制,随后 OCI 分发规范在 oci#965 中弃用了外部层。2023 年,微软取消了其镜像中外部数据层的使用,使此功能过时。

Docker v28.0 弃用了 --allow-nondistributable-artifacts 守护程序标志以及 daemon.json 中相应的 allow-nondistributable-artifacts 字段。设置任一选项不再生效,但会添加弃用警告日志以提高对弃用的认识。此警告计划在 Docker v29.0 中成为错误。

因此,建议当前使用这些选项的用户从其配置中删除此选项,以防止在升级到 Docker v29.0 时守护程序无法启动。

GET /info API 响应中 RegistryConfigAllowNondistributableArtifactsCIDRsAllowNondistributableArtifactsHostnames 字段也已弃用。对于 API 版本 v1.48 及更低版本,这些字段仍包含在响应中,但始终为 null。在 API 版本 v1.49 及更高版本中,该字段将完全省略。

docker stopdocker restart 上的 --time 选项

在版本 v28.0 中弃用

docker stopdocker container stopdocker restartdocker container restart 命令的 --time 选项已重命名为 --timeout,以与其他超时选项保持一致。--time 选项现已弃用并隐藏,但为向后兼容性仍可使用。建议用户改用 --timeout 选项。

镜像 inspect 中的非标准字段

在版本 v27.0 中弃用 在版本 v28.2 中移除

docker image inspect 中显示(以及 GET /images/{name}/json API 端点返回)的 Config 字段返回的附加字段不属于镜像的配置,也不属于 Docker 镜像规范OCI 镜像规范

这些字段从未设置(并且总是返回类型的默认值),但在为空时不会从响应中省略。由于这些字段不打算成为镜像配置响应的一部分,因此它们已被弃用,并将在下一个版本中从 API 中删除。

以下字段不属于底层镜像的 Config 字段,并且在 API v1.50 及更高版本(对应于 v28.2)的 API 响应中已删除。当使用使用旧 API 版本的客户端时,它们将继续包含在内

  • Hostname
  • Domainname
  • AttachStdin
  • AttachStdout
  • AttachStderr
  • Tty
  • OpenStdin
  • StdinOnce
  • Image
  • NetworkDisabled(除非在旧 API 版本上设置,否则省略)
  • MacAddress(除非在旧 API 版本上设置,否则省略)
  • StopTimeout(除非在旧 API 版本上设置,否则省略)

Graphdriver 插件(实验性)

在版本 v27.0 中弃用 在版本 v27.0 中默认禁用 计划在版本 v28.0 中移除

Graphdriver 插件是一个实验性功能,允许使用自定义存储驱动程序扩展 Docker Engine 以存储镜像和容器。此功能自诞生以来一直未维护。

Graphdriver 插件的支持在 v27.0 中默认禁用,并在 v28.0 中移除。建议此功能的用户改为配置 Docker Engine 使用 containerd 镜像存储和自定义 快照器

API CORS 头部

在版本 v27.0 中弃用 在版本 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://

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

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

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

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

镜像 inspect 中的 ContainerContainerConfig 字段

在版本 v25.0 中弃用 在版本 v26.0 中移除

docker inspect 返回的 ContainerContainerConfig 字段主要是经典(非 BuildKit)镜像构建器的实现细节。这些字段不可移植,在使用基于 BuildKit 的构建器(自 v23.0 起默认启用)时为空。这些字段在 v25.0 中已弃用,并从 v26.0(API 版本 v1.45 及更高版本)开始省略。如果需要镜像的配置,可以从 Config 字段中获取。

弃用旧版 API 版本

在版本 v25.0 中弃用 计划在版本 v26.0 中移除

Docker 守护程序提供版本化 API 以实现与旧客户端的向后兼容性。Docker 客户端可以执行 API 版本协商以选择守护程序支持的最新 API 版本(必要时降级到旧版本 API)。API 版本协商是在 Docker v1.12.0(API 1.24)中引入的,在此之前的客户端使用固定 API 版本。

通过 v25.0 的 Docker Engine 版本提供对给定平台稳定版本中包含的所有 API 版本的支持。对于 Linux 上的 Docker 守护程序,最早支持的 API 版本是 1.12(对应于 Docker Engine v1.0.0),而对于 Windows 上的 Docker 守护程序,最早支持的 API 版本是 1.24(对应于 Docker Engine v1.12.0)。

支持旧版 API 版本(在当前版本的 Docker Engine 上提供旧 API 版本)主要是为了提供与最近但仍受支持的客户端版本的兼容性,这是一种常见情况(Docker 守护程序可能更新到最新版本,但并非所有客户端都可能最新,反之亦然)。对在此之前的 API 版本的支持(由 Docker 守护程序的 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,
upgrade your client to a newer version

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

网络 Aliases 字段中的容器短 ID

在版本 v25.0 中弃用 在版本 v26.0 中移除

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

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

在版本 v25.0 中弃用 在版本 v28.2 中移除

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

AUTOMATED 列已从 v25.0 中默认的 docker searchdocker image search 输出中移除,并且相应的 IsAutomated 模板已在 v28.2 中移除。

Logentries 日志驱动

在版本 v24.0 中弃用 在版本 v25.0 中移除

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

守护程序的 OOM-score 调整

在版本 v24.0 中弃用 在版本 v25.0 中移除

添加了 oom-score-adjust 选项,以防止守护程序在其他进程之前被 OOM-kill。此选项主要是为了方便,因为将守护程序作为 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 子命令获得。

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

此版本标志着 Linux 镜像的经典(“旧版”)构建器弃用周期的开始。经典构建器上将不再进行主动开发(错误修复除外)。BuildKit 开发始于五年前,自 Docker 18.09 以来已脱离“实验”阶段,并且已经是 Docker Desktop 的默认构建器。尽管我们确信 BuildKit 在一般使用中是稳定的,但行为上可能存在一些变化。如果您在使用 BuildKit 时遇到问题,我们鼓励您在 BuildKit 的 GitHub 问题跟踪器{: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://docs.container.net.cn/go/buildx/

如果使用静态二进制文件安装 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.container.net.cn/go/buildx/

我们建议安装 Buildx 组件以继续使用 BuildKit 进行构建,但作为替代方案,用户可以取消设置 DOCKER_BUILDKIT 环境变量以回退到旧版构建器,或者使用 DOCKER_BUILDKIT=0 退出使用 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 之后,stackcontext 命令中对 Kubernetes 的支持已从 CLI 中移除,与此功能相关的选项现在要么被忽略,要么可能产生错误。

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

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

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

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

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

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

从不兼容的镜像注册表拉取镜像

在版本 v20.10 中弃用 在版本 v28.2 中移除

Docker Engine v20.10 及更高版本包含优化功能,可在拉取前验证本地镜像缓存中的镜像是否需要更新,从而防止 Docker Engine 发出不必要的 API 请求。这些优化要求容器镜像注册表符合 Open Container Initiative Distribution Specification

虽然大多数注册表都符合规范,但我们发现有些注册表不符合规范,导致 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.

添加回退是为了允许用户将他们的镜像迁移到兼容的注册表,或者让这些注册表变得兼容。

GitHub 弃用了旧版 docker.pkg.github.com 注册表,并已在 2025 年 2 月 24 日停用,取而代之的是 GitHub Container Registry (GHCR, ghcr.io),因此不再需要此回退。

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

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

在 Windows 上运行 Linux 容器 (LCOW) 的实验性功能在 Docker 17.09 中作为技术预览引入。虽然在引入后进行了许多改进,但该功能从未完全完成,现在已停止开发,转而支持在 WSL2 中原生运行 Linux 上的 Docker。

鼓励希望在 Windows 主机上运行 Linux 工作负载的开发人员改为使用 带有 WSL2 的 Docker Desktop

使用 cgroups v1 的 BLKIO 权重选项

在版本 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),因为 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 内核并未明确弃用此功能,并且 runc 问题跟踪器中有一个跟踪票证,用于确定是否应恢复此选项或者这是否是 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-opt 守护程序选项已移除。

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

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

Docker CLI 直到 v1.7.0 都使用 ~/.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=valueENV 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 在 docker build 上引入了一个实验性 --stream 标志,允许增量地将构建上下文发送到守护程序,而不是无条件地发送整个构建上下文。

此功能已作为 BuildKit 的一部分重新实现,BuildKit 默认使用流式传输,并且在使用经典构建器时将忽略 --stream 选项,而是打印弃用警告。

鼓励希望使用此功能的用户通过设置 DOCKER_BUILDKIT=1 环境变量或通过守护程序或 CLI 配置文件来启用 BuildKit。

fluentd-async-connect 日志选项

在版本 v20.10 中弃用 在版本 v28.0 中移除

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 中默认禁用

在版本 v28.2 中移除

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

不应再使用这些旧版格式,建议用户更新镜像以使用当前格式,或升级到更新的镜像。从 Docker v26.0 开始,默认禁用拉取这些镜像,并在 v28.2 中移除了支持。尝试拉取旧版镜像现在会产生错误

$ docker pull ubuntu:10.04
Error response from daemon:
Docker Image Format v1 and Docker Image manifest version 2, schema 1 support has been removed.
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.container.net.cn/go/deprecated-image-specs/

docker engine 子命令

在版本 v19.03 中弃用

在版本 v20.10 中移除

docker engine activatedocker 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 Compose 文件支持所取代。

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

在版本 v19.03 中弃用

在版本 v20.10 中移除

由于此功能没有进行开发,并且没有主动使用文件格式,因此 DAB 文件格式和顶级 docker deploy 命令(在 19.03 中默认隐藏)的支持将被移除,取而代之的是使用 compose 文件的 docker stack deploy

支持 overlay2.override_kernel_check 存储选项

在版本 v19.03 中弃用 在版本 v24.0 中移除

此守护程序配置选项禁用了用于检测内核是否支持带有多个较低目录的 OverlayFS 的 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 存储驱动促进了 Docker 在不支持 OverlayFS 的发行版上运行,例如最初随 3.14 内核发布的 Ubuntu 14.04 LTS。

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

旧版 overlay 存储驱动

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

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

旧版 overlay 存储驱动程序允许在早于 v4.x 的内核上使用 overlayFS 支持的文件系统。现在所有支持的发行版都能够运行 overlay2(因为它们要么在内核 4.x 上,要么具有多层目录的后移植支持),因此没有理由继续维护 overlay 存储驱动程序。

Device mapper 存储驱动

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

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

devicemapper 存储驱动程序促进了 Docker 在不支持其他存储驱动程序(如 overlay2 或 btrfs)的旧(3.x)内核上运行。

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

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

在版本 v18.06 中弃用

在版本 v20.10 中移除

引擎标签中 com.docker.*io.docker.*org.dockerproject.* 命名空间一直被记录为保留,但从未强制执行。

现在,使用这些命名空间将在引擎日志中导致警告,以劝阻其使用,并在 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 注册表执行 pullpushlogin 操作。尽管默认启用,但这表示弃用 v1 协议的意图。

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

从 Docker 17.12 开始,对 V1 注册表的支持已移除,--disable-legacy-registry 标志不能再使用,如果设置,dockerd 将无法启动。

默认情况下 service createservice update 异步执行

在版本 v17.05 中弃用

在版本 v17.10 中默认禁用

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

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

dockerd 上的 -g--graph 标志

在版本 v17.05 中弃用

在版本 v23.0 中移除

dockerddocker daemon 命令的 -g--graph 标志用于指示存储持久数据和资源配置的目录,并已被更具描述性的 --data-root 标志取代。这些标志在 v17.05 中已弃用并隐藏,并在 v23.0 中移除。

NetworkSettings 中的顶级网络属性

在版本 v1.13.0 中弃用

计划在版本 v17.12 中移除

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

EndpointIDGatewayGlobalIPv6AddressGlobalIPv6PrefixLenIPAddressIPPrefixLenIPv6GatewayMacAddress

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

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

/images/json 端点的 filter 选项

在版本 v1.13.0 中弃用

在版本 v20.10 中移除

过滤镜像列表的 filter 选项(按名称或名称:标签)现在已实现为常规过滤器,名为 reference

repository:shortid 镜像引用

在版本 v1.13.0 中弃用

在版本 v17.12 中移除

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

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

docker daemon 子命令

在版本 v1.13.0 中弃用

在版本 v17.12 中移除

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

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

在版本 v1.13.0 中弃用

在版本 v17.12 中移除

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

Dockerfile 中的 MAINTAINER

在版本 v1.13.0 中弃用

MAINTAINERLABEL 的早期非常有限的形式,应改为使用 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 存储驱动程序将无法正常工作。例如,如果 XFS 使用 ftype=0 选项格式化,则不支持 d_type

对这些设置的支持已移除,并且 Docker v23.0 及更高版本现在在尝试在没有 d_type 支持的后备文件系统上使用 overlay2overlay 存储驱动程序时无法启动。

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

在版本 v1.12.0 中弃用

在版本 v20.10 中移除

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

--help 的简写 -h

在版本 v1.12.0 中弃用

计划在版本 v17.09 中移除

简写 (-h) 在 Linux 上不如 --help 常见,并且不能在所有子命令上使用(因为它与例如 docker create 上的 -h / --hostname 冲突)。因此,-h 简写未在子命令的“用法”输出中打印,也未在文档中说明,现在已标记为“已弃用”。

docker login 上的 -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 中弃用

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

docker tag 上的 -f 标志

在版本 v1.10.0 中弃用

在版本 v1.12.0 中移除

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

API 容器启动时的 HostConfig

在版本 v1.10.0 中弃用

在版本 v1.12.0 中移除

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

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

在版本 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-taggelf-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 离线密钥已重命名为根密钥,标记密钥已重命名为仓库密钥。由于此重命名,我们还更改了相应的环境变量

  • 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 二进制文件。

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

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

在版本 v1.6.0 中弃用

在版本 v17.09 中移除

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

docker commit 上的 --run 标志

在版本 v0.10.0 中弃用

在版本 v1.13.0 中移除

docker commit 命令的 --run 标志(及其简写 -run)已弃用,取而代之的是允许传递 Dockerfile 命令的 --changes 标志。

docker import 中的三个参数形式

在版本 v0.6.7 中弃用

在版本 v1.12.0 中移除

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

© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.