已弃用的引擎功能
此页面概述了引擎中已弃用的功能。不包括打包和支持的 (Linux) 发行版的更改。要了解 Linux 发行版支持的结束时间,请参阅 发行说明.
功能弃用策略
随着 Docker 的更改,可能存在需要移除现有功能或将其替换为更新的功能的情况。在移除现有功能之前,它将在文档中标记为“已弃用”,并在 Docker 中保留至少一个稳定版本,除非另有明确说明。在此时间之后,它可能会被移除。
预期用户会注意每个版本的已弃用功能列表,并尽快规划他们从这些功能迁移出去,以及(如果适用)向替换功能迁移。
已弃用的引擎功能
下表概述了已弃用功能的当前状态
- 已弃用:此功能标记为“已弃用”,不应再使用。此功能可能会在将来的版本中被移除、禁用或更改行为。“已弃用”列包含此功能被标记为已弃用的版本,而“移除”列包含此功能将被移除的暂定版本。如果“移除”列中没有包含版本,则表示尚未确定此版本。
- 已移除:此功能已被移除、禁用或隐藏。有关详细信息,请参阅链接部分。某些功能被“软”弃用,这意味着它们仍然出于向后兼容性目的而起作用,并允许用户迁移到替代方案。在这种情况下,可能会打印警告,用户不应依赖此功能。
镜像检查中的非标准字段
在版本 v27.0 中已弃用 在版本 v28.0 中目标移除
docker image inspect
(以及由 GET /images/{name}/json
API 终结点返回)中显示的 Config
字段返回了额外的字段,这些字段不是镜像配置的一部分,也不属于 Docker 镜像规范 和 [OCI 镜像规范]。
这些字段从不设置(并且始终返回类型的默认值),但在留空时不会从响应中省略。由于这些字段并非旨在成为镜像配置响应的一部分,因此它们已弃用,并将从下一个版本中的 API 中移除。
以下字段目前包含在 API 响应中,但不是基础镜像的 Config 的一部分,并且已弃用
主机名
域名
AttachStdin
AttachStdout
AttachStderr
Tty
OpenStdin
StdinOnce
镜像
NetworkDisabled
(除非设置,否则已省略)MacAddress
(除非设置,否则已省略)StopTimeout
(除非设置,否则已省略)
Graphdriver 插件(实验性)
在版本 v27.0 中已弃用 在版本 v27.0 中默认禁用 在版本 v28.0 中目标移除
Graphdriver 插件 是一个实验性功能,允许使用自定义存储驱动程序来扩展 Docker 引擎,以存储镜像和容器。此功能自创建以来一直未维护,并且将在即将发布的版本中不再受支持。
对 graphdriver 插件的支持在 v27.0 中默认禁用,并在 v28.0 中移除。在 v27.0 中提供了一个 DOCKERD_DEPRECATED_GRAPHDRIVER_PLUGINS
环境变量来重新启用此功能。此环境变量必须在守护程序的环境中设置为非空值。
DOCKERD_DEPRECATED_GRAPHDRIVER_PLUGINS
环境变量以及对 graphdriver 插件的支持将在 v28.0 中移除。建议使用此功能的用户将 Docker 引擎配置为使用 containerd 镜像存储 以及自定义 snapshotter。
API CORS 标头
在版本 v27.0 中已弃用 在版本 v28.0 中目标移除
Docker 守护进程的 api-cors-header
配置选项是不安全的,因此已弃用并计划在将来移除。错误设置此选项可能会为未经身份验证的跨域请求提供机会,使其被守护进程接受。
从 Docker 引擎 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 及更高版本中,如果守护进程也配置为通过 TCP 接受远程连接,则指定 --tls=false
或 --tlsverify=false
CLI 标志会导致守护进程无法启动。这也适用于 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 引擎版本(包括 v25.0)支持所有 API 版本 在给定平台的稳定版本中包含。对于 Linux 上的 Docker 守护进程,最早支持的 API 版本是 1.12(对应 Docker 引擎 v1.0.0),而对于 Windows 上的 Docker 守护进程,最早支持的 API 版本是 1.24(对应 Docker 引擎 v1.12.0)。
对旧 API 版本的支持(在当前版本的 Docker 引擎上提供旧 API 版本)主要目的是为了提供与最近但仍在支持的客户端版本的兼容性,这是一个常见的场景(Docker 守护进程可能已更新到最新版本,但并非所有客户端都可能更新,反之亦然)。对之前的 API 版本的支持(由 EOL 版本的 Docker 守护进程提供的 API 版本)是在“尽力而为”的基础上提供的。
使用旧 API 版本的情况非常少见,并且对旧 API 版本的支持涉及相当大的复杂性(Docker 1.0.0 已经发布了 10 年)。因此,我们将开始弃用对旧 API 版本的支持。
Docker 引擎 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 覆盖文件),并且指定的 API 版本必须受守护进程支持(在 Linux 上为 1.12
或更高版本,或在 Windows 上为 1.24
或更高版本)。
对低于 1.24
的 API 版本的支持将在 Docker 引擎 v26 中永久移除,并且最低支持的 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
设置的别名。
一个新的字段 DNSNames
已在 v25.0 中引入,它包含容器名称(如果指定)、主机名、网络别名以及容器短 ID,应使用它来代替 Aliases
字段。
IsAutomated 字段和 docker search 上的“is-automated”过滤器
弃用版本:v25.0 计划移除版本:v26.0
Docker Hub 的搜索 API 已弃用“is_automated”字段。因此,在将来,镜像搜索中的 IsAutomated
字段将始终设置为 false
,并且搜索“is-automated=true”将不会产生任何结果。
AUTOMATED
列已从 v25.0 中的默认 docker search
和 docker image search
输出中移除,并且相应的 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 杀死而添加的。此选项主要作为一种便利添加,因为将守护进程作为 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 的问题,我们建议您在 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.dockerd.com.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.dockerd.com.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 弃用之后,stack
和 context
命令对 Kubernetes 的支持已从 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_ORCHESTRATOR
、DOCKER_ORCHESTRATOR
和 KUBECONFIG
环境变量,以及 ~/.docker/config.json
cli 配置文件中的 stackOrchestrator
选项不再使用,并且会被忽略。
从不符合规范的镜像注册表拉取镜像
在以下版本中弃用:v20.10
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.
添加回退机制是为了允许用户将其镜像迁移到符合规范的注册表,或者使这些注册表符合规范。
请注意,此回退仅解决 docker pull
上的失败问题。其他命令(例如 docker stack deploy
或使用 containerd
拉取镜像)将继续失败。
鉴于这些注册表上的其他功能仍然无法正常工作,我们认为此回退是临时解决方案,并且将在将来的主要版本中移除此回退。
Windows 上的 Linux 容器 (LCOW)(实验性)
在以下版本中弃用:v20.10 在以下版本中移除:v23.0
在 Docker 17.09 中,作为技术预览,引入了在 Windows 上运行 Linux 容器(LCOW)的实验性功能。尽管在引入之后进行了许多改进,但该功能从未达到完整状态,并且开发现已停止,转而支持在 WSL2 中本机运行 Docker。
希望在 Windows 主机上运行 Linux 工作负载的开发者建议使用 Docker Desktop with WSL2 代替。
使用 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
)标记为 "不推荐",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-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
语法,并且可能在将来版本中被移除。鼓励用户更新他们的 Dockerfile 以使用 ENV name=value
语法,例如
ENV ONE="" TWO="" THREE="world"
docker build --stream
标志(实验性)
在以下版本中被弃用:v20.10 在以下版本中被移除:v20.10
Docker v17.07 引入了一个实验性的 --stream
标志,用于 docker build
,它允许将构建上下文增量发送到守护程序,而不是无条件地发送整个构建上下文。
此功能已作为 BuildKit 的一部分重新实现,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 架构 1 和“Docker Image v1”格式已被弃用,取而代之的是 v2 架构 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.dockerd.com.cn/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 引擎分发版来升级 Docker Community 引擎到 Docker Enterprise。
此功能仅在 Linux 上可用,并且仅在本地节点上执行时可用。鉴于此功能的局限性,并且此功能没有得到广泛采用,docker engine
子命令将被移除,转而通过标准包管理器进行安装。
顶级 docker deploy
子命令(实验性)
在以下版本中被弃用:v19.03
在以下版本中被移除:v20.10
顶层 docker deploy
命令(使用“Docker 应用程序包”(.dab) 文件格式)在 Docker 1.13 / 17.03 中作为实验性功能引入,但后来被使用 docker stack deploy
子命令支持的 Docker Compose 文件取代。
使用“dab”文件(实验性)的 docker stack deploy
在以下版本中被弃用: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 中移除
aufs
存储驱动程序已弃用,取而代之的是 `overlay2`,并且已在 Docker Engine v24.0 中移除。aufs
存储驱动程序的用户必须迁移到其他存储驱动程序(例如 `overlay2`),然后再升级到 Docker Engine v24.0。
aufs
存储驱动程序可以使 Docker 在不支持 OverlayFS 的发行版上运行,例如 Ubuntu 14.04 LTS,它最初附带的是 3.14 内核。
现在,Ubuntu 14.04 不再是 Docker 支持的发行版,并且 `overlay2` 可用于所有支持的发行版(因为它们都在内核 4.x 上,或者已经反向移植了对多个下层目录的支持),因此没有理由继续维护 aufs
存储驱动程序。
旧版覆盖存储驱动程序
在版本:v18.09 中弃用 在版本:v24.0 中移除
overlay
存储驱动程序已弃用,取而代之的是 `overlay2` 存储驱动程序,它具有 `overlay` 的所有优点,但没有其局限性(过度使用 inode)。旧版 `overlay` 存储驱动程序已在 Docker Engine v24.0 中移除。overlay
存储驱动程序的用户应该在升级到 Docker Engine v24.0 之前迁移到 `overlay2` 存储驱动程序。
旧版 `overlay` 存储驱动程序允许在 4.x 之前的内核上使用 OverlayFS 支持的文件系统。现在所有支持的发行版都可以运行 `overlay2`(因为它们都在内核 4.x 上,或者已经反向移植了对多个下层目录的支持),因此没有理由继续维护 `overlay` 存储驱动程序。
设备映射器存储驱动程序
在版本:v18.09 中弃用 在版本:v23.0 中默认禁用 在版本:v25.0 中移除
devicemapper
存储驱动程序已弃用,取而代之的是 `overlay2`,并且已在 Docker Engine v25.0 中移除。devicemapper
存储驱动程序的用户必须迁移到其他存储驱动程序(例如 `overlay2`),然后再升级到 Docker Engine v25.0。
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 注册表执行 pull
、push
和 login
操作。尽管默认情况下已启用,但这表明有意弃用 v1 协议。
对公共注册表的 v1 协议的支持已在 1.13 中移除。任何使用 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。
/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 中弃用
MAINTAINER
是 LABEL
的早期非常有限的形式,应该使用 LABEL
代替。
没有版本的 API 调用
在版本:v1.13.0 中弃用
在版本:v17.12 中的目标是移除
应为所有 API 调用提供 API 版本,以确保与未来引擎版本的兼容性。您现在必须请求 /v1.25/containers/json
,而不是只请求例如 URL /containers/json
。
没有 d_type
支持的覆盖/overlay2 的支持文件系统
在版本:v1.13.0 中弃用
在版本:v17.12 中移除
如果支持文件系统不支持 d_type
,则 overlay 和 overlay2 存储驱动程序无法按预期工作。例如,如果 XFS 使用 ftype=0
选项格式化,则它不支持 d_type
。
对这些设置的支持已移除,并且 Docker v23.0 及更高版本现在在尝试在不支持 d_type
的支持文件系统上使用 overlay2
或 overlay
存储驱动程序时无法启动。
有关详细信息,请参考 #27358。
docker search
上的 --automated
和 --stars
标志
在版本:v1.12.0 中弃用
在版本:v20.10 中移除
docker search --automated
和 docker search --stars
选项已弃用。请改用 docker search --filter=is-automated=<true|false>
和 docker search --filter=stars=...
。
-h
是 --help
的简写
在版本:v1.12.0 中弃用
在版本:v17.09 中的目标是移除
简写 (-h
) 不如 Linux 上的 --help
常见,并且不能在所有子命令上使用(因为它与 docker create
上的 -h
/ --hostname
冲突)。因此,-h
简写不在子命令的“用法”输出中打印,也没有记录,现在被标记为“弃用”。
docker login
上的 -e
和 --email
标志
在版本:v1.11.0 中弃用
已于以下版本中移除: v17.06
docker login 命令将不再支持在目标注册表中自动注册帐户,即使给定的用户名不存在。由于此更改,email 标志不再需要,并将被弃用。
docker run
上 --security-opt
标志的分隔符 (:
)
在版本:v1.11.0 中弃用
将在以下版本中移除: v17.06
--security-opt
标志不再使用冒号分隔符 (:
) 来分隔键值对,而是使用等号 (=
),以与其他类似标志 (如 --storage-opt
) 保持一致。
API 中的不明确事件字段
已于以下版本中弃用: v1.10.0
events API 中的 ID
、Status
和 From
字段已被弃用,取而代之的是更丰富的结构。有关新格式,请参阅 events 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 --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 内容信任 ENV 密码短语变量名称更改
已于以下版本中弃用: 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 内置 exec 驱动程序
已于以下版本中弃用: 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 commit
上的 --run
标志
已于以下版本中弃用: 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 月起已弃用。不再受支持。