已弃用的Docker引擎功能
本页面提供了Engine中已弃用功能的概述。不包括包装和支持的(Linux)发行版的变化。要了解Linux发行版的支持结束情况,请参阅发布说明。
功能弃用政策
随着Docker的更改,有时可能需要移除现有功能或用新功能替换。在移除现有功能之前,它会在文档中标记为“已弃用”,并在Docker中保留至少一个稳定版本,除非另有明确说明。之后,它可能会被移除。
用户应注意每个版本中已弃用功能的列表,并计划尽快迁移这些功能,以及(如果适用)尽快迁移到替代功能。
已弃用的引擎功能
下表提供了已弃用功能的当前状态概览:
已弃用: 该功能被标记为“已弃用”,不应再使用。
该功能可能会在未来的版本中被移除、禁用或改变行为。 "Deprecated" 列包含该功能被标记为弃用的版本,而 "Remove" 列包含该功能计划被移除的暂定版本。如果 "Remove" 列中没有包含版本,则表示该功能的移除版本尚未确定。
已移除: 该功能已被移除、禁用或隐藏。
详情请参阅链接部分。一些功能是“软”弃用的,这意味着它们仍然为了向后兼容而保持功能,并允许用户迁移到替代方案。在这种情况下,可能会打印警告,用户不应依赖此功能。
镜像检查中的非标准字段
在版本 v27.0 中已弃用 计划在版本 v28.0 中移除
在docker image inspect中显示的Config字段(以及通过GET /images/{name}/json API端点返回的)返回了不属于镜像配置的额外字段,也不属于Docker镜像规范和OCI镜像规范。
这些字段从未设置(并且总是返回类型的默认值),但在留空时不会在响应中省略。由于这些字段原本不打算成为图像配置响应的一部分,它们已被弃用,并将在下一个版本中从API中移除。
以下字段目前包含在API响应中,但不是底层图像的Config字段的一部分,并且已弃用:
HostnameDomainnameAttachStdinAttachStdoutAttachStderrTtyOpenStdinStdinOnceImageNetworkDisabled(除非设置,否则已省略)MacAddress(除非设置,否则已省略)StopTimeout(除非设置,否则已省略)
Graphdriver 插件(实验性)
在版本 v27.0 中已弃用 在版本 v27.0 中默认禁用 计划在版本 v28.0 中移除
Graphdriver 插件 是一个实验性功能,允许通过自定义存储驱动程序扩展 Docker 引擎,用于存储镜像和容器。自其推出以来,该功能并未得到维护,并且在即将发布的版本中将不再支持。
在v27.0中,默认情况下禁用了对图形驱动插件的支持,并将在v28.0中移除。在v27.0中提供了一个DOCKERD_DEPRECATED_GRAPHDRIVER_PLUGINS环境变量以重新启用该功能。此环境变量必须在守护进程的环境中设置为非空值。
DOCKERD_DEPRECATED_GRAPHDRIVER_PLUGINS 环境变量以及图形驱动插件的支持将在 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://localhost之外的所有TCP地址。
在版本27.0及以后,如果指定--tls=false或--tlsverify=false CLI标志,并且守护进程配置为通过TCP接受远程连接,则守护进程将无法启动。这也适用于daemon.json中的等效配置选项。
为了便于通过TCP远程访问Docker守护进程,您需要实现TLS验证。这通过加密传输中的数据并提供相互认证机制来保护连接。
对于不需要远程守护进程访问的环境,我们建议将Docker守护进程绑定到Unix套接字。对于需要远程访问且TLS加密不可行的守护进程,您可能需要考虑使用SSH作为替代解决方案。
如需了解更多信息、帮助以及配置Docker守护进程的TLS(或SSH)的逐步指导,请参阅保护Docker守护进程套接字。
Container 和 ContainerConfig 字段在镜像检查中
在版本 v25.0 中已弃用 计划在版本 v26.0 中移除
由docker inspect返回的Container和ContainerConfig字段主要是经典(非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 Engine上提供旧版API版本)主要是为了提供与最近但仍受支持的客户端版本的兼容性,这是一种常见的情况(Docker守护程序可能会更新到最新版本,但并非所有客户端都可能更新,反之亦然)。对于更早的API版本(由EOL版本的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使用1.23的API版本,这将产生一个错误:
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或更高版本)。
在 Docker Engine v26 中,将永久移除对低于 1.24 的 API 版本的支持,并且在之后的版本中,最低支持的 API 版本将逐步提高。
我们不建议依赖DOCKER_MIN_API_VERSION环境变量,除非在无法更新旧客户端且必须支持这些客户端的特殊情况下。
网络别名字段中的容器短ID
在版本 v25.0 中已弃用 在版本 v26.0 中已移除
docker inspect 返回的 Aliases 字段在容器启动后包含容器的短ID。这种行为在 v25.0 中已被弃用,但会保留到下一个版本 v26.0。从该版本开始,Aliases 字段将仅包含通过 docker container create 和 docker run 标志 --network-alias 设置的别名。
在v25.0中引入了一个新字段DNSNames,它包含容器名称(如果指定了)、主机名、网络别名以及容器短ID,应该用它来代替Aliases字段。
IsAutomated 字段,以及 docker search 上的 is-automated 过滤器
在版本 v25.0 中已弃用 计划在版本 v26.0 中移除
is_automated 字段已被 Docker Hub 的搜索 API 弃用。
因此,未来在镜像搜索中的 IsAutomated 字段将始终设置为
false,并且搜索 "is-automated=true" 将不会
返回任何结果。
在v25.0中,AUTOMATED列已从默认的docker search和docker image search输出中移除,相应的IsAutomated模板选项将在v26.0中移除。
Logentries 日志驱动
在版本 v24.0 中已弃用 在版本 v25.0 中已移除
logentries服务SaaS已于2022年11月15日关闭,导致此日志驱动程序无法使用。用户不应再使用此日志驱动程序,并且该驱动程序已在Docker 25.0中移除。升级后,使用此日志驱动程序的现有容器将迁移为使用“local”日志驱动程序。
守护进程的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 子命令使用。
Buildx 组件在安装 docker CLI 时会自动安装,使用我们的 .deb 或 .rpm 包时,静态链接的二进制文件在 download.docker.com 上提供,也可以通过 Docker Hub 上的 docker/buildx-bin 镜像 提供。请参考 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 镜像。
旧版构建器回退
在版本 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/如果使用静态二进制文件安装了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_BUILDKIT=0选择不使用BuildKit。
请注意,经典构建器已被弃用,因此在未来的版本中,自动回退和选择不使用BuildKit将不再可能。
在CentOS 7和RHEL 7上的Btrfs存储驱动
在版本中移除:v23.0
在CentOS和RHEL上,btrfs存储驱动作为技术预览提供,但自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 中已移除
随着在Kubernetes上使用Compose的弃用,CLI中stack和context命令对Kubernetes的支持已被移除,与此功能相关的选项现在要么被忽略,要么可能会产生错误。
以下命令行标志已从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 CLI 配置文件中的 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 中已移除
在Windows上运行Linux容器(LCOW)的实验性功能在Docker 17.09中作为技术预览引入。尽管在其引入后进行了许多改进,但该功能从未达到完整状态,并且开发现已停止,转而支持在WSL2中原生运行Docker。
希望在Windows主机上运行Linux工作负载的开发者建议使用 使用WSL2的Docker桌面 代替。
使用cgroups v1的BLKIO权重选项
在版本 v20.10 中已弃用
在使用cgroups v1时,指定blkio权重(docker run --blkio-weight 和 docker 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和覆盖网络
在版本 v20.10 中已弃用 在版本 v23.0 中已移除
独立(“经典”)Swarm 已被弃用,随之而来的是使用外部键/值存储的覆盖网络。相应的--cluster-advertise、--cluster-store 和 --cluster-store-opt 守护程序选项已被移除。
支持旧的 ~/.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
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语法,并且可能在未来的版本中移除。鼓励用户更新他们的Dockerfiles以使用ENV name=value语法,例如:
ENV ONE="" TWO="" THREE="world"docker build --stream 标志(实验性)
在版本 v20.10 中已弃用 在版本 v20.10 中已移除
Docker v17.07 在 docker build 上引入了一个实验性的 --stream 标志,它允许将构建上下文逐步发送到守护进程,而不是无条件地发送整个构建上下文。
此功能已作为BuildKit的一部分重新实现,默认使用流式传输,而在使用经典构建器时,--stream选项将被忽略,并打印弃用警告。
鼓励想要使用此功能的用户通过设置DOCKER_BUILDKIT=1环境变量或通过守护进程或CLI配置文件来启用BuildKit。
fluentd-async-connect 日志选项
在版本 v20.10 中已弃用
fluentd日志驱动程序的--log-opt fluentd-async-connect选项已被弃用,推荐使用--log-opt fluentd-async。
如果使用了旧选项,守护进程日志中会记录一条弃用消息:
fluent#New: AsyncConnect is now deprecated, use Async instead
鼓励用户今后使用fluentd-async选项,因为旧选项的支持将在未来的版本中移除。
使用镜像清单v2模式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 Engine 分发,将 Docker Community 引擎升级到 Docker Enterprise。
此功能仅在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 文件支持所取代。
docker stack deploy 使用 "dab" 文件 (实验性)
在版本 v19.03 中已弃用
在版本 v20.10 中移除
由于此功能没有进行任何开发,并且没有活跃使用该文件格式,对DAB文件格式和顶级docker deploy命令(在19.03版本中默认隐藏)的支持将被移除,转而支持使用compose文件的docker stack deploy。
支持 overlay2.override_kernel_check 存储选项
在版本 v19.03 中已弃用 在版本 v24.0 中已移除
此守护程序配置选项禁用了用于检测内核是否支持具有多个下层目录的OverlayFS的Linux内核版本检查,这是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存储驱动。
旧版覆盖存储驱动
在版本 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上,要么已经支持多个lowerdirs的回移植),因此没有理由继续维护overlay存储驱动程序。
设备映射器存储驱动
在版本 v18.09 中已弃用 在版本 v23.0 中默认禁用 在版本 v25.0 中已移除
devicemapper 存储驱动已被弃用,推荐使用 overlay2,并且在 Docker Engine v25.0 中已被移除。使用 devicemapper 存储驱动的用户必须在升级到 Docker Engine v25.0 之前迁移到其他存储驱动,例如 overlay2。
devicemapper 存储驱动程序有助于在较旧(3.x)内核上运行 Docker,这些内核不支持其他存储驱动程序(如 overlay2 或 btrfs)。
现在所有支持的发行版都添加了对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
守护进程已移至单独的二进制文件(dockerd),应使用该文件代替。
引擎标签中具有冲突值的重复键
在版本中已弃用: v1.13.0
在版本中移除:v17.12
当设置具有冲突值的重复键时,将产生错误,并且守护进程将无法启动。
MAINTAINER 在 Dockerfile 中
在版本中已弃用: v1.13.0
MAINTAINER 是早期非常有限的一种 LABEL 形式,应该使用 LABEL 来代替。
没有版本的API调用
在版本中已弃用: v1.13.0
目标在发布版本中移除:v17.12
应提供API版本以确保与未来引擎版本的兼容性。例如,现在必须请求/v1.25/containers/json,而不仅仅是请求/containers/json。
不支持d_type的底层文件系统用于overlay/overlay2
在版本中已弃用: v1.13.0
在版本中移除:v17.12
如果底层文件系统不支持d_type,overlay和overlay2存储驱动器的行为将不符合预期。例如,如果XFS使用ftype=0选项格式化,则不支持d_type。
对这些设置的支持已被移除,当尝试在没有d_type支持的后备文件系统上使用overlay2或overlay存储驱动时,Docker v23.0及以上版本现在将无法启动。
详情请参考 #27358。
--automated 和 --stars 标志在 docker search 上
在版本中已弃用: v1.12.0
在版本中移除:v20.10
docker search --automated 和 docker search --stars 选项已被弃用。
请使用 docker search --filter=is-automated= 和 docker search --filter=stars=... 代替。
-h 是 --help 的简写
在版本中已弃用: v1.12.0
目标在发布版本中移除:v17.09
在Linux上,缩写形式(-h)不如--help常见,并且不能在所有子命令上使用(因为它与例如docker create上的-h / --hostname冲突)。因此,-h缩写形式没有在子命令的“用法”输出中打印,也没有记录,现在被标记为“已弃用”。
-e 和 --email 标志在 docker login 上
在版本中已弃用: v1.11.0
在版本中移除: v17.06
如果给定的用户名不存在,docker login 不再自动在目标注册表中注册账户。由于这一变化,电子邮件标志不再需要,并将被弃用。
分隔符 (:) 的 --security-opt 标志在 docker run 上
在版本中已弃用: 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命令中的标签保持一致,docker tag命令中的-f标志已被弃用。不再需要指定-f来将标签从一个镜像移动到另一个镜像。如果缺少-f标志且指定的标签已被使用,docker也不会生成错误。
API容器启动时的HostConfig
在版本中已弃用: v1.10.0
在版本中移除: v1.12.0
将HostConfig传递给POST /containers/{name}/start已被弃用,建议在容器创建时定义(POST /containers/create)。
--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 内容信任环境变量密码短语变量名称更改
在版本中已弃用: 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 内置执行驱动
在版本中已弃用: v1.8.0
在版本中移除: v1.10.0
内置的LXC执行驱动、lxc-conf标志和API字段已被移除。
旧的命令行选项
在版本中已弃用: v1.8.0
在版本中移除: v1.10.0
标志 -d 和 --daemon 已被弃用。请改用单独的 dockerd 二进制文件。
以下某些命令行选项的单破折号(-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
标志 --run 的 docker commit 命令(及其缩写版本 -run)已被弃用,转而支持允许传递 Dockerfile 命令的 --changes 标志。
在docker import中的三个参数形式
在版本中已弃用: v0.6.7
在版本中移除: v1.12.0
自2013年11月起,docker import 命令格式 file|URL|- [REPOSITORY [TAG]] 已被弃用。不再支持该格式。