已棄用的 Docker Engine 功能
本頁面概述了 Engine 中已棄用的功能。包裝方式與支援的 (Linux) 發行版的變更不包括在內。若要了解 Linux 發行版的支援終止資訊,請參閱發行說明。
功能棄用政策
隨著 Docker 的變更,有時現有的功能需要被移除或替換為較新的功能。在現有功能被移除之前,它會在文件中被標記為 "deprecated" (已棄用),並且除非明確另有說明,否則會在至少一個穩定版本中保留在 Docker 中。此後它可能會被移除。
使用者應注意每個版本中已棄用的功能列表,並儘快規劃遷移至這些功能之外,並(如適用)遷移至替代功能。
已棄用的 Engine 功能
下表概述了已棄用功能的當前狀態
已棄用 (Deprecated):該功能標記為 "deprecated",不應再使用。
該功能可能會在未來版本中被移除、停用或變更行為。"Deprecated" 欄包含該功能被標記為棄用的版本,而 "Remove" 欄包含計劃移除該功能的暫定版本。如果 "Remove" 欄中未包含版本,則表示尚未決定該版本。
已移除 (Removed):該功能已被移除、停用或隱藏。
詳細資訊請參閱連結章節。某些功能屬於 "軟" 棄用,這表示為了向後相容並允許使用者遷移至替代方案,它們仍然可以使用。在此類情況下,系統可能會列印警告,使用者不應依賴此功能。
來自 inspect API 的鏡像設定中為空/nil 的欄位
棄用版本:v28.3 預計移除版本:v29.0
docker image inspect (以及 GET /images/{name}/json API 端點) 回傳的 Config 欄位目前包含某些即使為空或 nil 的欄位。從 Docker v29.0 開始,當這些欄位包含空值或預設值時,將會從 API 回應中省略
CmdEntrypointEnvLabelsOnBuild使用者磁碟區WorkingDir
消耗鏡像 inspect API 的應用程式應更新以優雅地處理這些欄位的缺失,將缺失的欄位視為具有其預設值/空值。
對於對應於 Docker v29.0 的 API 版本,這些欄位為空時將會被省略。當使用要求較舊 API 版本以實現向後相容性的客戶端時,這些欄位將繼續包含在內。
推送不可分發 (non-distributable) 構件的設定
棄用版本:v28.0 預計移除版本:v29.0
不可分發構件 (也稱為外部層) 在 docker v1.12 中引入,以適應 Windows 鏡像,其 EULA 不允許層透過微軟主機以外的倉庫進行分發。外部/不可分發層的概念在 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 回應 RegistryConfig 中的 AllowNondistributableArtifactsCIDRs 和 AllowNondistributableArtifactsHostnames 欄位也已棄用。對於 API 版本 v1.48 及更低版本,這些欄位仍包含在回應中,但始終為 null。在 API 版本 v1.49 及更高版本中,該欄位將完全省略。
docker stop 和 docker restart 上的 --time 選項
棄用版本:v28.0
docker stop、docker container stop、docker restart 和 docker 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 版本的客戶端時,它們將繼續包含在內
HostnameDomainnameAttachStdinAttachStdoutAttachStderrTtyOpenStdinStdinOnceImageNetworkDisabled(除非在較舊的 API 版本中設定,否則將被省略)MacAddress(除非在較舊的 API 版本中設定,否則將被省略)StopTimeout(除非在較舊的 API 版本中設定,否則將被省略)
Graphdriver 外掛程式 (實驗性)
棄用版本:v27.0 預設停用版本:v27.0 預計移除版本:v28.0
Graphdriver 外掛程式是一項實驗性功能,允許使用自訂儲存驅動程式來擴展 Docker Engine,以儲存鏡像和容器。此功能自引入以來一直未得到維護。
對 graphdriver 外掛程式的支援在 v27.0 中預設被停用,並在 v28.0 中移除。建議該功能的使用者將 Docker Engine 設定為使用 containerd 鏡像儲存 和自訂 snapshotter
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 中的 Container 和 ContainerConfig 欄位
棄用版本:v25.0 已移除版本:v26.0
docker inspect 回傳的 Container 和 ContainerConfig 欄位主要是傳統 (非 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 版本 (由已停止支援 (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 設定為使用 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 create 和 docker run 旗標 --network-alias 設定的別名。
v25.0 中引入了一個包含容器名稱 (若有指定)、主機名稱、網路別名以及容器短 ID 的新欄位 DNSNames,應使用該欄位代替 Aliases 欄位。
IsAutomated 欄位,以及 docker search 上的 is-automated 過濾器
棄用版本:v25.0 已移除版本:v28.2
is_automated 欄位已被 Docker Hub 的搜尋 API 棄用。因此,鏡像搜尋中的 IsAutomated 欄位將來將始終被設定為 false,且搜尋 "is-automated=true" 將不會產生任何結果。
AUTOMATED 欄位已從 v25.0 的預設 docker search 和 docker image search 輸出中移除,對應的 IsAutomated 模板已在 v28.2 中移除。
Logentries 日誌驅動程式
棄用版本:v24.0 已移除版本:v25.0
Logentries SaaS 服務已於 2022 年 11 月 15 日關閉,導致此日誌驅動程式無法運作。使用者不應再使用此日誌驅動程式,且該驅動程式已在 Docker 25.0 中移除。使用此日誌驅動程式的現有容器在升級後會遷移至使用 "local" 日誌驅動程式。
守護行程 (daemon) 的 OOM-score 調整
棄用版本:v24.0 已移除版本:v25.0
增加 oom-score-adjust 選項是為了防止守護行程在其他行程之前被 OOM-killed (記憶體不足導致被殺死)。此選項主要是作為便利功能增加的,因為將守護行程作為 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 鏡像,並對 docker build 使用 Buildx CLI 元件。隨著此變更,docker build 現在公開了 BuildKit 提供的所有進階功能,這些功能以前只能透過 docker buildx 子指令使用。
當使用我們的 .deb 或 .rpm 套件安裝 docker CLI 時,會自動安裝 Buildx 元件,且靜態連結的二進位檔在 download.docker.com 上以及 Docker Hub 上的 docker/buildx-bin 鏡像中提供。請參閱 Buildx 章節以取得關於安裝 Buildx 元件的詳細說明。
此版本標誌著 Linux 鏡像傳統 ("legacy") 建置器棄用週期的開始。傳統建置器將不會進行主動開發 (除錯誤修復外)。BuildKit 開發始於五年前,自 Docker 18.09 以來已離開 "實驗性" 階段,並且已經是 Docker Desktop 的預設建置器。雖然我們相信 BuildKit 對於一般用途是穩定的,但其行為可能會有一些變更。如果您遇到 BuildKit 的問題,我們鼓勵您在 GitHub 上的 BuildKit 問題追蹤器中回報問題{:target="_blank" rel="noopener" class="_"}
用於建置 Windows 鏡像的傳統建置器
BuildKit (尚未) 提供對建置 Windows 鏡像的支援,且
docker build繼續使用傳統建置器在 Windows 守護行程上建置原生 Windows 鏡像。
傳統建置器回退 (fallback)
棄用版本: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.tw/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.tw/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 堆疊 (stack) 與內容 (context) 支援
棄用版本:v20.10 已移除版本:v23.0
隨著 Compose on Kubernetes 的棄用,CLI 中對 stack 和 context 命令的 Kubernetes 支援已被移除,且與此功能相關的選項現在要麼被忽略,要麼可能會產生錯誤。
以下命令列旗標已從 docker context 子指令中移除
--default-stack-orchestrator- swarm 現在是 stacks 唯一的 (且預設的) 編排器。--kubernetes- Kubernetes 端點不能再儲存在docker context中。--kubeconfig- 不再支援將 context 匯出為 kubeconfig 檔案。
docker context inspect 子指令產生的輸出不再包含新 context 的 StackOrchestrator 和 Kubernetes 端點資訊。
以下命令列旗標已從 docker stack 子指令中移除
--kubeconfig- 不再支援將 kubeconfig 檔案作為 context 使用。--namespace- 不再支援為 stacks 設定 Kubernetes 命名空間。--orchestrator- swarm 現在是 stacks 唯一的 (且預設的) 編排器。
DOCKER_STACK_ORCHESTRATOR、DOCKER_ORCHESTRATOR 和 KUBECONFIG 環境變數,以及 ~/.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 工作負載的開發者改用 Docker Desktop with WSL2。
cgroups v1 的 BLKIO 權重選項
棄用版本:v20.10
指定 blkio 權重 (docker run --blkio-weight 和 docker run --blkio-weight-device) 在使用 cgroups v1 時現已被標記為棄用,因為對應的功能已在 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) 標記為 "NOT RECOMMENDED" (不推薦),且諸如 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命令列中公開。
使用叢集儲存 (cluster store) 的傳統 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 用位於 ~/.docker/config.json 的新 CLI 設定檔取代了此檔案。在實作新設定檔時,保留了舊檔案 (和檔案格式) 作為回退,以協助現有使用者遷移至新檔案。
鑑於舊的檔案格式鼓勵不安全的憑證儲存 (憑證以未加密形式儲存),且自 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 在 docker build 上引入了一個實驗性的 --stream 旗標,允許建置內容被增量傳送至守護行程,而不是無條件傳送整個建置內容。
此功能已作為 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 2 和 OCI 鏡像規範 格式。
這些傳統格式不應再使用,建議使用者更新鏡像以使用當前格式,或升級至更當前的鏡像。從 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.docker.com.tw/go/deprecated-image-specs/
docker engine 子指令
棄用版本:v19.03
已移除版本:v20.10
docker engine activate、docker engine check 和 docker engine update 提供了一種替代安裝方法,使用基於鏡像的 Docker Engine 分發將 Docker Community engines 升級至 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 檔案支援所取代。
使用 "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
此守護行程設定選項停用了 Linux 核心版本檢查,該檢查用於偵測核心是否支援具有多個 lower dir 的 OverlayFS,這是 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,例如 Ubuntu 14.04 LTS,它最初隨 3.14 核心發布。
現在 Ubuntu 14.04 不再是 Docker 支援的發行版,且 overlay2 可用於所有支援的發行版 (因為它們要么使用核心 4.x,要么已向後移植對多個 lowerdirs 的支援),因此沒有理由繼續維護 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,要么已向後移植對多個 lowerdirs 的支援),因此沒有理由繼續維護 overlay 儲存驅動程式。
Device mapper 儲存驅動程式
棄用版本:v18.09 預設停用版本:v23.0 已移除版本:v25.0
devicemapper 儲存驅動程式已被棄用,轉而支援 overlay2,並已在 Docker Engine v25.0 中移除。devicemapper 儲存驅動程式的使用者必須在升級至 Docker Engine v25.0 之前遷移至不同的儲存驅動程式,例如 overlay2。
devicemapper 儲存驅動程式促進了在不支援其他儲存驅動程式 (例如 overlay2 或 btrfs) 的舊版 (3.x) 核心上執行 Docker。
現在 overlay2 的支援已增加到所有支援的發行版 (因為它們要么使用核心 4.x,要么已向後移植對多個 lowerdirs 的支援),因此沒有理由繼續維護 devicemapper 儲存驅動程式。
在 Engine 標籤中使用保留的命名空間
棄用版本:v18.06
已移除版本:v20.10
Engine 標籤中的命名空間 com.docker.*、io.docker.* 和 org.dockerproject.* 總是記錄為保留,但從未進行任何強制執行。
這些命名空間的使用現在會在 Engine 日誌中引起警告,以勸阻其使用,並在 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 進行變更。
dockerd 上的 -g 和 --graph 旗標
棄用版本: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 中就已經 "deprecated",但為了向後相容而保留了下來。
詳細資訊請參閱 #17538。
/images/json 端點的 filter 選項
棄用版本:v1.13.0
已移除版本:v20.10
根據參考 (名稱或名稱:標籤) 過濾鏡像列表的 filter 選項現在實作為一個名為 reference 的常規過濾器。
repository:shortid 鏡像參考
棄用版本:v1.13.0
已移除版本:v17.12
用於引用鏡像的 repository:shortid 語法使用率極低,會與標籤參考衝突,並且可能與摘要參考混淆。
對 repository:shortid 記法來引用鏡像的支援已在 Docker 1.12 中移除 (註:原文此處應為 1.12,根據文檔上下文)。
docker daemon 子指令
棄用版本:v1.13.0
已移除版本:v17.12
守護行程已移至單獨的二進位檔 (dockerd),應改用該二進位檔。
Engine 標籤中具有衝突值的重複鍵
棄用版本:v1.13.0
已移除版本:v17.12
當設定具有衝突值的重複鍵時,會產生錯誤,且守護行程將無法啟動。
Dockerfile 中的 MAINTAINER
棄用版本:v1.13.0
MAINTAINER 是 LABEL 的早期非常有限的形式,現在應使用 LABEL。
沒有版本的 API 呼叫
棄用版本:v1.13.0
預計移除版本:v17.12
API 版本應提供給所有 API 呼叫,以確保與未來 Engine 版本的相容性。您必須現在請求 /v1.25/containers/json,而不是僅僅請求例如 /containers/json 的 URL。
針對 overlay/overlay2 沒有 d_type 支援的後端檔案系統
棄用版本: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=...。
--help 的 -h 簡寫
棄用版本:v1.12.0
預計移除版本:v17.09
簡寫 (-h) 在 Linux 上不如 --help 常見,且不能用於所有子指令 (因為它與 docker create 上的 -h / --hostname 等衝突)。因此,-h 簡寫未在子指令的 "usage" 輸出中列印,也未進行文件說明,現已被標記為 "deprecated"。
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
事件 API 中的 ID、Status 和 From 欄位已被棄用,轉而支援結構更豐富的內容。請參閱事件 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 Content Trust ENV 通行碼變數名稱變更
棄用版本:v1.9.0
已移除版本:v1.12.0
自 1.9 起,Docker Content Trust 離線金鑰 (Offline key) 已重新命名為根金鑰 (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 或名稱)/copy 端點
棄用版本:v1.8.0
已移除版本:v1.12.0
/containers/(id 或名稱)/copy 端點已被棄用,轉而支援 /containers/(id 或名稱)/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
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 月起已被棄用。它不再受支援。