Docker Engine 版本 28 發行說明

此頁面描述了 Docker Engine 版本 28 的最新更改、新增功能、已知問題和修復。

有關更多資訊,請參閱

28.1.1

2025-04-18

有關此版本中拉取請求和更改的完整列表,請參閱相關的 GitHub 里程碑

錯誤修復和增強功能

  • 修復 dockerd-rootless-setuptool.sh 錯誤報告缺失 iptables 的問題。moby/moby#49833
  • containerd 映象儲存:修復使用 docker load 載入包含零大小 tar 頭部的歸檔檔案時可能導致守護程序崩潰的問題。moby/moby#49837

打包更新

網路

  • 當未找到上游 DNS 伺服器時,在容器的 /etc/resolv.conf 中新增警告。moby/moby#49827

28.1.0

2025-04-17

有關此版本中拉取請求和更改的完整列表,請參閱相關的 GitHub 里程碑

新增

  • 新增 docker bake 子命令作為 docker buildx bake 的別名。docker/cli#5947
  • 實驗性:在 docker rundocker create 上新增新的 --use-api-socket 標誌,以啟用從容器內部訪問 Docker 套接字,並與容器共享來自主機的憑據。docker/cli#5858
  • docker image inspect 現在支援 --platform 標誌,用於檢查多平臺映象的特定平臺。docker/cli#5934

錯誤修復和增強功能

  • 新增 CLI shell 補全對上下文名稱的支援。docker/cli#6016
  • 修復 docker images --tree 未將非容器映象的內容大小計入總映象內容大小的問題。docker/cli#6000
  • 修復 docker load 未保留被替換映象的問題。moby/moby#49650
  • 修復登入自定義登錄檔時 docker login 提示的問題。docker/cli#6015
  • 修復在高 CPU 核心數機器上 docker stats 無法正常工作的問題。moby/moby#49734
  • 修復與私有倉庫互動時導致 docker pull/push 失敗的迴歸問題。docker/cli#5964
  • 修復在沒有 ip_tables 核心模組的主機上阻止無根 Docker 設定的問題。moby/moby#49727
  • 修復可能導致 firewalld 重新載入後,不需要的 iptables 規則被恢復且從未被刪除的問題。moby/moby#49728
  • 改進 CLI 對 docker service scale 的補全。docker/cli#5968
  • docker images --tree 現在預設隱藏未標記的映象和懸空(dangling)映象。docker/cli#5924
  • 如果無法建立與 Docker 守護程序的連線,docker system info 將提供退出碼。docker/cli#5918
  • containerd 映象儲存:修復使用 BuildKit 構建時未發出 image tag 事件的問題。 moby/moby#49678
  • containerd 映象儲存:改進 docker push/pull 對遠端 registry 錯誤的處��方式。 moby/moby#49770
  • containerd 映象儲存:顯示非層映象 blob 的拉取進度。 moby/moby#49746

打包更新

網路

  • 修復 Swarm 容器上的主機埠對映在 docker psdocker inspect 時重複顯示的 bug。 moby/moby#49724
  • 修復導致容器網路附加失敗,並出現錯誤“Bridge port not forwarding”(橋接埠未轉發)的問題。 moby/moby#49705
  • 修復從預設橋接網路中的容器移除 --link 時出現的問題。 moby/moby#49778
  • 改進網路-端點關係的跟蹤方式,以減少錯誤返回“has active endpoints”(有活動端點)錯誤的機會。 moby/moby#49736
  • 改進“has active endpoints”(有活動端點)錯誤訊息,包含仍連線到正在刪除的網路上的端點名稱。 moby/moby#49773

API

  • 將 API 版本更新到 v1.49moby/moby#49718
  • GET /image/{name}/json 現在支援 platform 引數,允許指定要檢查的多平臺映象的哪個平臺變體。 moby/moby#49586
  • GET /info 現在返回一個 FirewallBackend 欄位,其中包含有關守護程序防火牆配置的資訊。 moby/moby#49761

Go SDK

  • 將最低要求的 Go 版本更新到 go1.23。 docker/cli#5868
  • cli/command/context: 從 JSON 輸出中移除臨時的 ContextType 欄位。 docker/cli#5981
  • client: 在可能的情況下,保留映象引用為規範格式。 moby/moby#49609

已棄用

  • API:在 GET /info 響應的 RegistryConfig 結構中,已棄用的 AllowNondistributableArtifactsCIDRsAllowNondistributableArtifactsHostnames 欄位在 API v1.49 中已省略。 moby/moby#49749
  • API:已棄用:GET /info 端點中的 ContainerdCommit.ExpectedRuncCommit.ExpectedInitCommit.Expected 欄位在 API v1.48 中已棄用,現在在 API v1.49 中已省略。 moby/moby#48556
  • Go-SDK:cli/command/image: 棄用 RunPull:此函式僅在內部使用,將在下個版本中移除。 docker/cli#5975
  • Go-SDK:cli/config/configfile: 棄用 ConfigFile.Experimental 欄位。自 v20.10 版本以來,實驗性 CLI 功能始終啟用,此欄位不再使用。對於可選功能,請改用 ConfigFile.Features。此欄位將在未來版本中移除。 docker/cli#5977
  • Go-SDK:棄用 pkg/archive,該模組已遷移到 github.com/moby/go-archivemoby/moby#49743
  • Go-SDK:棄用 pkg/atomicwriter,該模組已遷移到 github.com/moby/sys/atomicwritermoby/moby#49748
  • Go-SDK:opts: 移除已棄用的 PortOptConfigOptSecretOpt 別名。 docker/cli#5953
  • Go-SDK:registry: 棄用 APIEndpoint.Official 欄位。 moby/moby#49706

28.0.4

2025-03-25

有關此版本中拉取請求和更改的完整列表,請參閱相關的 GitHub 里程碑

錯誤修復和增強功能

  • 修復與私有倉庫互動時導致 docker pull/push 失敗的迴歸問題。docker/cli#5964

28.0.3

2025-03-25

有關此版本中拉取請求和更改的完整列表,請參閱相關的 GitHub 里程碑

錯誤修復和增強功能

  • 修復當容器在資料被消費前退出時,docker run 過早截斷 STDOUT/STDERR 的問題。 docker/cli#5957

打包更新

28.0.2

2025-03-19

有關此版本中拉取請求和更改的完整列表,請參閱相關的 GitHub 里程碑

錯誤修復和增強功能

  • 修復 CLI 特定屬性 (docker.cli.*) 被無意中傳遞給下游 OTel 服務的問題。docker/cli#5842
  • 修復使用者指定的 OTEL_RESOURCE_ATTRIBUTES 屬性被 CLI 內部遙測屬性覆蓋的問題。CLI 現在可以正確地將使用者指定的屬性與內部屬性合併,使兩者共存。docker/cli#5842
  • 修復在 Windows 系統上,當存在 v28.0.0 之前建立的容器時,daemon 無法啟動的問題。moby/moby#49626
  • 修復在使用 --min-free-space 引數執行 docker buildx prune 時可能出現的錯誤。moby/moby#49623
  • 修復關閉容器時 daemon 日誌中出現虛假的 io: read/write on closed pipe 錯誤。moby/moby#49590
  • 修復當 containerd socket 未立即可用時,Docker daemon 過早失敗的問題。moby/moby#49603
  • 預設在容器的 /proc/sys 中遮蔽 Linux 熱中斷資訊。moby/moby#49560
  • 更新 contrib/check-config.sh,以檢查更多與 iptables 相關的核心模組。moby/moby#49622
  • containerd 映象儲存:修復透過 --user 引數傳遞的使用者 ID 處理中的整數溢位問題。moby/moby#49652
  • containerd 映象儲存:修復 daemon 日誌中記錄虛假的 reference for unknown type: application/vnd.in-toto+json 警告。moby/moby#49652
  • containerd 映象儲存:提高執行大量容器時 docker ps 的效能。moby/moby#49365

打包更新

網路

  • 新增環境變數 DOCKER_INSECURE_NO_IPTABLES_RAW=1,以允許 Docker 在 Linux 核心無法提供 CONFIG_IP_NF_RAW 支援的系統上執行。啟用此選項後,Docker 將不會在 iptables 的 raw 表中建立規則。警告:生產環境不建議使用此選項,因為它會降低安全性,允許本地網路上的其他主機路由到釋出到主機地址的埠,即使它們釋出到 127.0.0.1。此選項繞過了 Docker Engine 28.0.0 中引入的一些安全強化措施。moby/moby#49621
  • 允許在端點連線到 macvlan 網路驅動程式(其中父介面已關閉)時啟動容器。moby/moby#49630
  • 對於源自 gateway_mode=routed 網路的報文,不要跳過 DNAT。moby/moby#49577
  • 修復導致 docker ps 不一致地報告雙棧埠對映的 bug。moby/moby#49657
  • 修復可能導致 docker-proxy 停止將 UDP 資料報轉發到容器的 bug。moby/moby#49649
  • 修復導致 docker-proxy 過早關閉到容器的 UDP 連線並導致源地址不必要地更改的 bug。moby/moby#49649

Go SDK

  • cli-plugins/manager 中的各種型別和常量移至單獨的包。docker/cli#5902
  • 將最低要求的 Go 版本更新至 go1.23。moby/moby#49541
  • cli/command:將 PrettyPrint 工具函式移至 cli/command/formatterdocker/cli#5916
  • runconfig/errors:將 ErrConflictHostNetwork 拆分為 ErrConflictConnectToHostNetworkErrConflictDisconnectFromHostNetworkmoby/moby#49605

已棄用

  • Go-SDK:廢棄 cli-plugins/manager.ResourceAttributesEnvvar 常量。此常量曾用於內部,但其值為 OTEL_RESOURCE_ATTRIBUTES 名稱,該名稱屬於 OpenTelemetry 規範。使用此常量的使用者應自行定義。此常量將在下一版本中移除。docker/cli#5881
  • Go-SDK:廢棄 opts.PortOptopts.ConfigOptopts.SecretOpt。這些型別已移至 opts/swarmopts 包。docker/cli#5907
  • Go-SDK:移除 service/logs 包。docker/cli#5910
  • Go-SDK:cli/command/image:廢棄 PushTrustedReference 並移至 cli/trustdocker/cli#5894
  • Go-SDK:cli/command/image:廢棄 TrustedPush 並將其內部化。docker/cli#5894
  • Go-SDK:cli/command:廢棄 Cli.NotaryClient,請改用 trust.GetNotaryRepository。此方法已不再使用,將在下一版本中移除。docker/cli#5885
  • Go-SDK:cli/command:廢棄 Cli.RegistryClient。此方法僅在內部使用,將在下一版本中移除。請改用 client.NewRegistryClientdocker/cli#5889
  • Go-SDK:registry:廢棄 RepositoryInfo.Official 欄位。moby/moby#49567
  • Go-SDK:registry:廢棄 HostCertsDir。此函式僅在內部使用,將在下一版本中移除。moby/moby#49612
  • Go-SDK:registry:廢棄 SetCertsDir。使用 RootlessKit 執行時,證書目錄現在會自動選擇,不應再手動設定。moby/moby#49612

28.0.1

2025-02-26

有關此版本中拉取請求和更改的完整列表,請參閱相關的 GitHub 里程碑

網路

  • 移除對核心模組 ip_setip_set_hash_netnetfilter_xt_set 的依賴。
    • 此依賴項在 28.0.0 版本中引入,但被證明具有過度干擾性。使用這些模組的 iptables 規則已被替換。moby/moby#49530
  • 允許在停用 IPv6 的主機上啟動 daemon,無需強制要求 --ip6tables=false 引數。moby/moby#49525
  • 修復了一個錯誤,該錯誤會導致使用 --restart=always 且已釋出埠已被佔用的容器進入緊密迴圈重啟。 moby/moby#49507
  • 修復了 Swarm 入口(ingress)的一個問題,該問題由 iptables 規則順序不正確導致。 moby/moby#49538
  • 修復了從 --config-only 網路建立 swarm 作用域網路的問題。 moby/moby#49521
  • 修復了 docker network inspect 在沒有指定 IPAM 配置的情況下報告新建立網路的 IPv6 閘道器帶有 CIDR 字尾的問題,此問題會在守護程式(daemon)重啟後恢復正常。 moby/moby#49520
  • 改進了當核心模組 ip_setip_set_hash_netnetfilter_xt_set 不可用時報告的錯誤資訊。 moby/moby#49524
  • 將大多數 Docker 的 iptables 規則移出 filter-FORWARD 鏈,以便其他應用程式可以自由地追加必須在 Docker 規則之後的規則。 moby/moby#49518
  • 更新了 --help 輸出和 man 手冊頁,以說明哪些選項僅適用於預設的橋接網路。 moby/moby#49522

錯誤修復和增強功能

  • 修復了在使用 "skip-tls-verify" 選項時,docker context create 總是返回錯誤的問題。 docker/cli#5850
  • 修復了 shell 補全在建議服務和節點時顯示 ID 而不是名稱的問題。 docker/cli#5848
  • 修復了 docker exec/run 返回非零狀態時意外將退出狀態列印到標準錯誤輸出的問題。 docker/cli#5854
  • 修復了迴歸錯誤:protocol "tcp" is not supported by the RootlessKit port driver "slirp4netns"moby/moby#49514
  • containerd 映象儲存:修復了 docker inspect 無法顯示包含所有平臺缺失層(missing layers)的多平臺映象的問題。 moby/moby#49533
  • containerd 映象儲存:修復了 docker images --tree 報告錯誤內容大小的問題。 moby/moby#49535
  • 修復了在 i386 平臺上的編譯問題。 moby/moby#49526

打包更新

API

  • containerd 映象儲存:修復了對於僅含索引(index-only)的映象,GET /images/json?manifests=1 未填充 Manifests 欄位的問題。 moby/moby#49533
  • containerd 映象儲存:修復了 GET /images/json and /images/<name>/jsonSize.Content 欄位包含了本地不可用內容大小的問題。 moby/moby#49535

28.0.0

2025-02-19

有關此版本中拉取請求和更改的完整列表,請參閱相關的 GitHub 里程碑

新增

  • 新增透過 --mount type=image 選項將映象掛載到容器內的功能。 moby/moby#48798
    • 您還可以指定 --mount type=image,image-subpath=[subpath],... 選項來從映象中掛載特定路徑。 docker/cli#5755
  • docker images --tree 現在顯示元資料徽章(metadata badges)。 docker/cli#5744
  • docker loaddocker savedocker history 現在支援 --platform 標誌,允許您在對多平臺映象執行單平臺操作時選擇特定平臺。 docker/cli#5331
  • docker service createdocker stack 命令新增 OOMScoreAdj 引數。 docker/cli#5145
  • docker buildx prune 現在支援 reserved-spacemax-used-spacemin-free-spacekeep-bytes 過濾器。 moby/moby#48720
  • Windows:新增支援將 containerd 作為守護程式(daemon)的子程序執行,而非使用系統安裝的 containerd。 moby/moby#47955

網路

  • docker-proxy 二進位制檔案已更新,舊版本將無法與更新後的 dockerd 一起工作。 moby/moby#48132
    • 關閉了一個時間視窗,在此時間視窗內,使用者態代理(docker-proxy)可能接受 TCP 連線,而這些連線會在 iptables NAT 規則設定完成後失敗。
    • 可執行檔案 rootlesskit-docker-proxy 不再使用,已從構建和分發中移除。
  • 從宿主機 /etc/resolv.conf 讀取的 DNS 域名伺服器現在總是從宿主機的網路名稱空間中訪問。 moby/moby#48290
    • 當宿主機的 /etc/resolv.conf 不包含任何域名伺服器且沒有指定 --dns 覆蓋時,除了預設橋接網路和構建容器外,不再使用 Google 的 DNS 伺服器。
  • 橋接(bridge)和 macvlan 網路中的容器介面現在使用隨機生成的 MAC 地址。 moby/moby#48808
    • 介面啟動時將傳送 Gratuitous ARP / Neighbour Advertisement 訊息,以便在 IP 地址被重用時,它們能與新生成的 MAC 地址關聯起來。
    • 預設橋接網路中的 IPv6 地址現在由 IPAM 分配,而不是從 MAC 地址派生。
  • 已棄用的 OCI prestart 鉤子現在僅由構建容器使用。對於其他容器,網路介面在任務建立完成後、容器任務啟動前被新增到網路名稱空間。 moby/moby#47406
  • docker rundocker container createdocker network connect 命令新增 gw-priority 選項。Engine 將使用此選項來確定哪個網路為容器提供預設閘道器。在 docker run 命令中,此選項僅透過擴充套件的 --network 語法可用。 docker/cli#5664
  • 新增網路標籤(netlabel) com.docker.network.endpoint.ifname,用於自定義將容器連線到網路時使用的介面名稱。Linux 上的所有內建網路驅動程式均支援此標籤。 moby/moby#49155
    • 當建立指定了多個網路的容器時,無法保證網路連線到容器的順序。因此,如果自定義介面名稱使用與自動生成名稱相同的名稱字首(例如 eth),容器可能無法啟動。
    • 推薦的做法是使用不同的字首(例如 en0),或者使用足夠大的數字字尾以避免衝突(例如 eth100)。
    • docker network connect 命令中,可以透過 --driver-opt 標誌指定此標籤,例如 docker network connect --driver-opt=com.docker.network.endpoint.ifname=foobar …
    • 或者在 docker run 命令中使用長格式的 --network 標誌,例如 docker run --network=name=bridge,driver-opt=com.docker.network.endpoint.ifname=foobar …
  • 如果自定義網路驅動程式報告支援 GwAllocChecker 能力,那麼在網路建立之前,它將收到一個包含網路選項的 GwAllocCheckerRequest 請求。然後,自定義驅動程式可以回覆不應分配閘道器 IP 地址。 moby/moby#49372

橋接網路中的埠釋出

  • dockerd 現在需要 Linux 核心支援 ipsetmoby/moby#48596
    • 用於實現埠釋出和網路隔離的 iptablesip6tables 規則已進行了廣泛修改。這啟用了以下一些功能更改,並且是重構以在未來版本中啟用本地 nftables 支援的第一步。moby/moby#48815
    • 如果需要降級到較早版本的守護程序,則需要手動清理新規則。最簡單且最可靠的方法是重啟主機,或者在啟動較早版本守護程序之前,使用 iptables -Fip6tables -F 清空 filter 表中的所有現有 iptables 規則。如果無法這樣做,請以 root 身份執行以下命令:
      • iptables -D FORWARD -m set --match-set docker-ext-bridges-v4 dst -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT; ip6tables -D FORWARD -m set --match-set docker-ext-bridges-v6 dst -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
      • iptables -D FORWARD -m set --match-set docker-ext-bridges-v4 dst -j DOCKER; ip6tables -D FORWARD -m set --match-set docker-ext-bridges-v6 dst -j DOCKER
      • 如果您之前以 ACCEPT 設定了 iptables filter-FORWARD 策略,並且需要恢復對未釋出埠的訪問,還需要刪除 DOCKER 鏈中的每個橋接網路的規則。例如,iptables -D DOCKER ! -i docker0 -o docker0 -j DROP
  • 修復了一個安全問題,該問題曾允許遠端主機直接連線到容器的已釋出埠。moby/moby#49325
  • 修復了一個安全問題,該問題曾允許鄰居主機連線到對映在迴環地址上的埠。moby/moby#49325
  • 修復了阻止埠釋出到本地連結地址的問題。moby/moby#48570
  • 現在,透過主機的公共 IP 地址,同一主機上其他網路中的容器可以可靠地訪問容器釋出的 UDP 埠。moby/moby#48571
  • 現在,只有當 Docker 在主機本身上啟用 IP 轉發時(sysctl 引數 net.ipv6.conf.all.forwardingnet.ipv6.conf.default.forwarding),Docker 才會將 ip6tables filter 表中 FORWARD 鏈的策略設定為 DROP。這與現有的 IPv4 行為保持一致。moby/moby#48594
    • 如果您的主機上啟用了 IPv6 轉發,但您之前依賴 Docker 將 ip6tables filter-FORWARD 策略設定為 DROP,您可能需要更新主機的配置以確保其安全。
  • 現在,在 DOCKER iptables 鏈中阻止了透過直接路由訪問未使用 -p/--publish 暴露的容器埠。moby/moby#48724
    • 如果主機上預設的 iptables filter-FORWARD 策略之前被設定為 ACCEPT,並且仍然需要從遠端主機直接路由訪問容器的未釋出埠,可選項包括:
      • 釋出您需要的埠。
      • 使用下面描述的新選項 gateway_mode_ipv[46]=nat-unprotected
    • 釋出到主機地址的容器埠將繼續透過這些主機地址(使用 NAT 或使用者空間代理)進行訪問。
    • 未釋出的容器埠仍可從 Docker 主機透過容器的 IP 地址直接訪問。
  • 使用 gateway_mode_ipv[46]=routed 建立的網路現在可以從同一 Docker 主機上執行的其他橋接網路以及主機外部訪問。moby/moby#48596
  • 橋接驅動選項 com.docker.network.bridge.gateway_mode_ipv4com.docker.network.bridge.gateway_mode_ipv6 現在接受模式 nat-unprotectedmoby/moby#48597
    • nat-unprotected 類似於預設的 nat 模式,但不為每個埠/協議設定規則。這意味著可以透過直接路由從遠端主機訪問容器上的任何埠。
  • 當網路也是 internal 時,橋接驅動選項 com.docker.network.bridge.gateway_mode_ipv4com.docker.network.bridge.gateway_mode_ipv6 現在接受模式 isolatedmoby/moby#49262
    • internal 網路中,通常會為橋接裝置分配地址。因此,Docker 主機上的程序可以訪問該網路,網路中的容器可以訪問偵聽該橋接地址上的主機服務(包括偵聽在主機任何地址,0.0.0.0:: 上的服務)。
    • 使用 gateway 模式 isolated 建立的 internal 橋接網路在 Docker 主機上沒有地址。
  • 當埠對映包含一個因使用 --gateway_mode_ipv[46] 停用主機 NAT 而無法使用的主機 IP 地址或埠號時,容器建立將不再失敗。如果在連線或斷開網路時 gateway endpoint 發生變化,可能需要這些未使用的欄位。日誌中會記錄有關未使用欄位的訊息。moby/moby#48575
  • 當用戶空間代理啟用時,不要為容器自己的已釋出埠建立 iptables nat-POSTROUTING masquerade 規則。moby/moby#48854

IPv6

  • 新增 docker network create 選項 --ipv4。要停用網路的 IPv4 地址分配,請使用 docker network create --ipv4=false [...]docker/cli#5599
  • 守護程序選項 --ipv6(在 daemon.json 中為 "ipv6": true)現在可以單獨使用,無需與 fixed-cidr-v6 一起使用。moby/moby#48319
  • IPAM 現在可以處理大於 "/64" 的子網。moby/moby#49223
  • 現在,橋接網路所屬橋接裝置分配的地址已停用重複地址檢測 (DAD)。moby/moby#48609
  • 修改了 host-gateway,以相容僅 IPv6 的網路。moby/moby#48807
    • 當在 --add-host 選項中使用特殊值 host-gateway 代替地址時,它會被 Docker 主機上的一個地址替換,以便可以透過名稱引用主機。使用的地址屬於預設橋接網路(通常是 docker0)。到目前為止,它一直是 IPv4 地址,因為橋接網路上的所有容器都有 IPv4 地址。
    • 現在,如果在預設橋接網路上啟用了 IPv6,則會為 IPv4 和 IPv6 地址建立 /etc/hosts 條目。因此,僅連線到僅 IPv6 網路的容器可以透過名稱訪問主機。
    • --host-gateway-ip 選項會覆蓋用於替換 host-gateway 的地址。命令列上現在允許使用兩個這樣的選項,分別用於一個 IPv4 gateway 和一個 IPv6。
    • daemon.json 檔案中,要提供兩個地址,請使用 "host-gateway-ips"。例如,"host-gateway-ips": ["192.0.2.1", "2001:db8::1111"]

錯誤修復和增強功能

  • 預設新增 IPv6 迴環地址作為不安全登錄檔。moby/moby#48540
  • 新增對 Cobra 生成的 dockerd 補全指令碼的支援。moby/moby#49339
  • 修復透過 systemd 在啟動時自動啟動容器時 DNS 查詢失敗的問題。moby/moby#48812
  • 修復 Docker Swarm 模式忽略 volume.subpath 的問題。docker/cli#5833
  • 修復 docker export 在操作取消後仍繼續匯出的問題。moby/moby#49265
  • 修復 docker export 在失敗後不釋放容器可寫層的問題。moby/moby#48517
  • 修復 docker images --tree 在有多個名稱可用時,不必要地截斷長映象名稱的問題。docker/cli#5757
  • 修復了守護程序啟動時,名稱與另一個容器 ID 匹配的容器無法恢復的 bug。moby/moby#48669
  • 修復 docker ps 顯示的一些 IPv6 地址未正確用方括號括起來的問題。docker/cli#5468
  • 修復 docker run 期間無法取消映象拉取操作的 bug。docker/cli#5645
  • 修復將守護程序作為 Windows 服務執行時,錯誤處理不當導致退出不乾淨的問題。moby/moby#48518
  • 修復使用 --attach stdout--attach stderr 時,docker run 的輸出與使用 stdin 時不一致的問題。現在,如果容器退出,docker run --attach stdin 也會退出。docker/cli#5662
  • 修復使用 NSS 模組支援的 subid 設定無根 Docker 時的問題。moby/moby#49036
  • CLI 生成的補全指令碼現在在每個命令/標誌建議旁邊顯示描述。docker/cli#5756
  • 現在,docker ps 在埠繫結中顯示的 IPv6 地址使用方括號括起來。docker/cli#5363
  • 為 Compose 實現了埠驗證方法。docker/cli#5524
  • 改進了命令列上無效標誌的錯誤輸出。docker/cli#5233
  • 改進了使用另一個容器網路名稱空間啟動容器失敗時的錯誤。moby/moby#49367
  • 改進了對無效 API 錯誤的處理,這類錯誤曾可能導致顯示空錯誤訊息。moby/moby#49373
  • 改進了未知(子)命令和無效引數的輸出和一致性。docker/cli#5234
  • 改進守護程式配置中 exec-opts 的驗證。 moby/moby#48979
  • 更新 --gpus=0 標誌的處理方式,使其與 NVIDIA Container Runtime 保持一致。 moby/moby#48482
  • client.ContainerCreate 現在將 HostConfig 中的 CapAddCapDrop 欄位規範化為它們的標準形式。 moby/moby#48551
  • docker image save 現在生成穩定的時間戳。 moby/moby#48611
  • docker inspect 現在允許你檢查 Swarm 配置。 docker/cli#5573
  • containerd 映象儲存:在 docker pull 中新增對 Extracting 層狀態的支援。 moby/moby#49064
  • containerd 映象儲存:修復了 `commit`、`import` 和 `build` 在替換映象時未將其保留為懸空映象的問題。 moby/moby#48316
  • containerd 映象儲存:當請求的平臺未載入時,使 `docker load --platform` 返回錯誤。 moby/moby#48718
  • 修復 `--link` 選項的驗證問題。 docker/cli#5739
  • 新增對 `network-diagnostic-port` 守護程式配置選項的驗證。 moby/moby#49305
  • 除非明確配置,否則在不需要閘道器的情況下不再為閘道器保留 IP 地址。具體來說,包括帶有選項 com.docker.network.bridge.inhibit_ipv4 的“內部”橋接網路,沒有父介面的 ipvlanmacvlan 網路,以及 L3 IPvlan 模式。 moby/moby#49261
  • 如果自定義網路驅動程式報告支援 GwAllocChecker 能力,那麼在網路建立之前,它將收到一個包含網路選項的 GwAllocCheckerRequest 請求。然後,自定義驅動程式可以回覆不應分配閘道器 IP 地址。 moby/moby#49372
  • 修復了一個問題,該問題導致容器無法同時連線到 L3 IPvlan 和其他網路型別。 moby/moby#49130
  • 斷開容器與網路連線時,移除正確的 /etc/hosts 條目。 moby/moby#48857
  • 修復重複的網路斷開事件。 moby/moby#48800
  • 解決了與更改 docker0fixed-cidr 相關的問題,以及從使用者管理的預設橋接 (--bridge) 推斷配置的問題。 moby/moby#48319
  • 移除特性標誌 windows-dns-proxy,該標誌在版本 26.1.0 中引入,用於控制 Windows 容器向外部 DNS 解析器轉發,以便使 nslookup 工作。該標誌在版本 27.0.0 中已預設啟用。 moby/moby#48738
  • 移除用於 SCTP 校驗和的 iptables mangle 規則。可以透過在守護程式環境中設定 DOCKER_IPTABLES_SCTP_CHECKSUM=1 來重新啟用該規則。此覆蓋設定將在未來版本中移除。 moby/moby#48149
  • 在大多數情況下,連線到橋接網路的速度更快。 moby/moby#49302

打包更新

Go SDK

  • 改進空物件 ID 的驗證。客戶端在使用空 ID 或名稱時現在返回“Invalid Parameter”錯誤。這將某些“Inspect”函式返回的錯誤從“Not found”錯誤更改為“Invalid Parameter”。 moby/moby#49381
  • Client.ImageBuild() 現在從 API 請求的查詢字串中省略預設值。 moby/moby#48651
  • api/types/container:合併 StatsStatsResponsemoby/moby#49287
  • client.WithVersion:設定 API 版本時去除 v 字首。 moby/moby#49352
  • client:新增 WithTraceOptions,允許指定自定義 OTe1 跟蹤選項。 moby/moby#49415
  • client:新增 HijackDialer 介面。 moby/moby#49388
  • client:新增 SwarmManagementAPIClient 介面,用於描述所有與 Swarm 特定物件相關的 API 客戶端方法。 moby/moby#49388
  • client:新增 WithTraceOptions,允許指定自定義 OTel 跟蹤選項。 moby/moby#49415
  • clientImageHistoryImageLoadImageSave 現在使用可變引數函式選項 (variadic functional options)。 moby/moby#49466
  • pkg/containerfs:移至內部 (internal)。 moby/moby#48097
  • pkg/reexec:現在可在除 Linux、Windows、macOS 和 FreeBSD 之外的其他平臺使用。 moby/moby#49118
  • api/types/container:引入 CommitResponse 型別。目前是 IDResponse 的別名,但在未來版本中可能會成為獨立型別。 moby/moby#49444
  • api/types/container:引入 ExecCreateResponse 型別。目前是 IDResponse 的別名,但在未來版本中可能會成為獨立型別。 moby/moby#49444

API

  • 更新 API 版本至 v1.48 moby/moby#48476
  • GET /images/{name}/json 響應現在返回 Manifests 欄位,其中包含映象索引中包含的子清單資訊。這包括平臺特定清單和構建證明等內容。 moby/moby#48264
  • POST /containers/create 現在支援型別為 imageMount,用於在容器內部掛載映象。 moby/moby#48798
  • GET /images/{name}/history 現在支援一個 platform 引數(JSON 編碼的 OCI Platform 型別),允許你指定要顯示歷史記錄的平臺。 moby/moby#48295
  • POST /images/{name}/loadGET /images/{name}/get 現在支援一個 platform 引數(JSON 編碼的 OCI Platform 型別),允許你指定要載入/儲存的平臺。不傳遞此引數將載入/儲存完整的多平臺映象。 moby/moby#48295
  • 改進容器和 exec 調整大小時無效寬度/高度的錯誤提示。 moby/moby#48679
  • POST /containers/create 端點現在在響應中包含警告,當將容器範圍的 VolumeDriver 選項與透過 Mounts 定義的卷結合使用時,因為 VolumeDriver 選項對這些卷沒有效果。此警告以前由 CLI 生成。 moby/moby#48789
  • containerd 映象儲存:GET /images/jsonGET /images/{name}/json 響應現在包含 Descriptor 欄位,其中包含映象目標的 OCI 描述符。新欄位僅在守護程序提供多平臺映象儲存時填充。 moby/moby#48894
  • containerd 映象儲存:GET /containers/{name}/json 現在返回一個 ImageManifestDescriptor 欄位,其中包含用於建立容器的映象的特定平臺映象清單的 OCI 描述符。 moby/moby#48855
  • 新增除錯端點(GET /debug/vars, GET /debug/pprof/, GET /debug/pprof/cmdline, GET /debug/pprof/profile, GET /debug/pprof/symbol, GET /debug/pprof/trace, GET /debug/pprof/{name})現在也可以透過帶版本的 API 路徑(/v<API-version>/<endpoint>)訪問。 moby/moby#49051
  • 修復 API 在驗證錯誤時返回 500 狀態碼而不是 400 的問題。 moby/moby#49217
  • 修復歸檔端點(HEAD /containers/{name:.*}/archive, GET /containers/{name:.*}/archive, PUT /containers/{name:.*}/archive)返回 500 狀態而不是 400 狀態的問題。 moby/moby#49219
  • POST /containers/create 現在在 HostConfig.SecurityOpt 中接受 writable-cgroups=true 選項,用於將容器的 cgroups 掛載為可寫。這提供了一種比 HostConfig.Privileged 更精細的方法。 moby/moby#48828
  • POST /build/prunekeep-bytes 重新命名為 reserved-space,現在支援額外的清理引數 max-used-spacemin-free-spacemoby/moby#48720
  • POST /networks/create 現在有一個 EnableIPv4 欄位。將其設定為 false 會停用該網路的 IPv4 IPAM。 moby/moby#48271
    • GET /networks/{id} 現在返回一個 EnableIPv4 欄位,顯示該網路是否啟用了 IPv4 IPAM。 moby/moby#48271
    • 使用者定義的 bridge 網路需要啟用 IPv4 或 IPv6 地址分配。預設的 bridge 網路(docker0)不能停用 IPv4。 moby/moby#48323
    • 可以建立停用 IPv4、IPv6 或同時停用這兩種地址族的地址分配的 macvlanipvlan 網路。 moby/moby#48299
    • Windows 或 Swarm 網路不能停用 IPv4。 moby/moby#48278
  • 添加了一種方法來指定哪個網路應為容器提供預設閘道器。 moby/moby#48936
    • POST /networks/{id}/connectPOST /containers/create 現在在 EndpointsConfig 中接受一個 GwPriority 欄位。該值用於確定哪個網路端點為容器提供預設閘道器。將選擇優先順序最高的端點。如果多個端點具有相同的優先順序,則按網路名稱進行字典排序,並選擇排序靠前的端點。 moby/moby#48746
    • GET /containers/json 現在在每個網路端點的 NetworkSettings 中返回一個 GwPriority 欄位。CLI 的新選項 gw-priority 會在 docker rundocker network connect 命令中使用 GwPriority 欄位。 moby/moby#48746
  • --sysctl 選項中針對 eth0 的設定不再自動遷移到網路端點。 moby/moby#48746
    • 例如,在 Docker CLI 中,docker run --network mynet --sysctl net.ipv4.conf.eth0.log_martians=1 ... 會被拒絕。您必須改用 docker run --network name=mynet,driver-opt=com.docker.network.endpoint.sysctls=net.ipv4.conf.IFNAME.log_martians=1 ...
  • GET /containers/json 現在返回一個 ImageManifestDescriptor 欄位,與 /containers/{name}/json 中的欄位一致。該欄位僅在守護程序提供多平臺映象儲存時填充。 moby/moby#49407

已移除

  • Fluent 日誌驅動選項 fluentd-async-connect 在 v20.10 中已被棄用,現在已被移除。 moby/moby#46114
  • docker stopdocker restart 命令上的 --time 選項已被棄用,並重命名為 --timeoutdocker/cli#5485
  • Go-SDK: pkg/ioutils:移除 NewReaderErrWrapper,因為它從未使用過。 moby/moby#49258
  • Go-SDK: pkg/ioutils:移除已棄用的 BytesPipe, NewBytesPipe, ErrClosed, WriteCounter, NewWriteCounter, NewReaderErrWrapper, NopFlushermoby/moby#49245
  • Go-SDK: pkg/ioutils:移除已棄用的 NopWriterNopWriteClosermoby/moby#49256
  • Go-SDK: pkg/sysinfo:移除已棄用的 NumCPU。 moby/moby#49242
  • Go-SDK:移除 pkg/broadcaster,因為它只在內部使用。 moby/moby#49172
  • Go-SDK:移除已棄用的 cli.Errors 型別。 docker/cli#5549
  • 移除 pkg/ioutils.ReadCloserWrapper,因為它只在測試中使用。 moby/moby#49237
  • 移除已棄用的 api-cors-header 配置引數和 dockerd--api-cors-header 選項。 moby/moby#48209
  • 移除已棄用的 APIEndpoint.Version 欄位、APIVersion 型別以及 APIVersion1APIVersion2 常量。 moby/moby#49004
  • 移除已棄用的 api-cors-header 配置引數和 Docker 守護程序的 --api-cors-header 選項。 docker/cli#5437
  • 移除已棄用的 pkg/directory 包。 moby/moby#48779
  • 移除已棄用的 pkg/dmsg.Dmesg()moby/moby#48109
  • 移除已棄用的 image/spec 包,該包已移至單獨的模組(github.com/moby/docker-image-spec)。 moby/moby#48460
  • 移除已棄用 logentries 日誌驅動程式的遷移程式碼和錯誤。 moby/moby#48891
  • 移除對已棄用的外部 graph-driver 外掛的支援。 moby/moby#48072
  • api/types:移除已棄用的 container.ContainerNodeContainerJSONBase.Node 欄位。 moby/moby#48107
  • api/types:移除已棄用的別名:ImagesPruneReport, VolumesPruneReport, NetworkCreateRequest, NetworkCreate, NetworkListOptions, NetworkCreateResponse, NetworkInspectOptions, NetworkConnect, NetworkDisconnect, EndpointResource, NetworkResource, NetworksPruneReport, ExecConfig, ExecStartCheck, ContainerExecInspect, ContainersPruneReport, ContainerPathStat, CopyToContainerOptions, ContainerStats, ImageSearchOptions, ImageImportSource, ImageLoadResponse, ContainerNodemoby/moby#48107
  • libnetwork/iptables:移除已棄用的 IPV, Iptables, IP6TablesPassthrough()moby/moby#49121
  • pkg/archive:移除已棄用的 CanonicalTarNameForPath, NewTempArchive, TempArchivemoby/moby#48708
  • pkg/fileutils:移除已棄用的 GetTotalUsedFdsmoby/moby#49210
  • pkg/ioutils:移除 OnEOFReader,因為它只在內部使用。 moby/moby#49170
  • pkg/longpath:移除已棄用的 Prefix 常量。 moby/moby#48779
  • pkg/stringid:移除已棄用的 IsShortIDValidateID 函式。 moby/moby#48705
  • runconfig/opts: 刪除已棄用的 ConvertKVStringsToMap moby/moby#48102
  • runconfig: 刪除已棄用的 ContainerConfigWrapper, SetDefaultNetModeIfBlank, DefaultDaemonNetworkMode, IsPreDefinedNetwork moby/moby#48102
  • container: 刪除已棄用的 ErrNameReserved, ErrNameNotReserved. moby/moby#48728
  • 移除 Daemon.ContainerInspectCurrent() 方法並更改 Daemon.ContainerInspect() 簽名以接受 backend.ContainerInspectOptions 結構體 moby/moby#48672
  • 刪除已棄用的 Daemon.Exists()Daemon.IsPaused() 方法。 moby/moby#48723

已棄用

  • API: GET /info 響應中的 BridgeNfIptablesBridgeNfIp6tables 欄位現在始終為 false,並在 API v1.49 中省略。netfilter 模組現在按需載入,不再在守護程序啟動期間載入,這使得這些欄位已過時。 moby/moby#49114
  • API: 對於返回 JSON 進度響應的流式端點(例如 POST /images/createPOST /images/{name}/pushPOST /build),其中的 errorprogress 欄位已棄用。 moby/moby#49447
    • 使用者應改用 errorDetailprogressDetail 欄位中的資訊。
    • 這些欄位分別在 API v1.4 (docker v0.6.0) 和 API v1.8 (docker v0.7.1) 中被標記為已棄用,但仍會返回。
    • 這些欄位在未來的 API 版本中將留空或被省略。
  • 棄用 Daemon.Register()。此函式未使用,並將在下一版本中移除。 moby/moby#48702
  • 棄用 client.ImageInspectWithRaw 函式,轉而使用新的 client.ImageInspectmoby/moby#48264
  • 棄用 daemon/config.Config.ValidatePlatformConfig()。此方法曾用作 config.Validate 的輔助方法,應改用後者。 moby/moby#48985
  • 棄用 pkg/reexec。此包已棄用並移至單獨的模組。請改用 github.com/moby/sys/reexecmoby/moby#49129
  • 棄用用於推送不可分發工件的配置 docker/cli#5724
  • 棄用 --allow-nondistributable-artifacts 守護程序標誌以及 daemon.json 中相應的 allow-nondistributable-artifacts 欄位。設定任一選項將不再生效,但會新增一個棄用警告日誌以提高對棄用的意識。 moby/moby#49065
  • 棄用 GET /info API 響應中的 RegistryConfig.AllowNondistributableArtifactsCIDRsRegistryConfig.AllowNondistributableArtifactsHostnames 欄位。對於 API 版本 v1.48 及更早版本,這些欄位仍包含在響應中,但始終為 null。在 API 版本 v1.49 及更高版本中,這些欄位將完全被省略。 moby/moby#49065
  • Go-SDK: 棄用 registry.ServiceOptions.AllowNondistributableArtifacts 欄位。 moby/moby#49065
  • Go-SDK: api/types/system.Info 中的 BridgeNfIptablesBridgeNfIp6tables 欄位以及 pkg/sysinfo.SysInfo 中的 BridgeNFCallIPTablesDisabledBridgeNFCallIP6TablesDisabled 欄位已棄用,並將在下一版本中移除。 moby/moby#49114
  • Go-SDK: client: 棄用 CommonAPIClient 介面,轉而使用 APIClient 介面。CommonAPIClient 將在下一版本中更改為 APIClient 的別名,並在再下一版本中移除。 moby/moby#49388
  • Go-SDK: client: 棄用 ErrorConnectionFailed 輔助函式。此函式僅在內部使用,並將在下一版本中移除。 moby/moby#49389
  • Go-SDK: pkg/ioutils: 棄用 NewAtomicFileWriter, AtomicWriteFile, AtomicWriteSet, NewAtomicWriteSet,轉而使用 pkg/atomicwriter 中的對應項。 moby/moby#49171
  • Go-SDK: pkg/sysinfo: 棄用 NumCPU。此實用工具與 runtime.NumCPU 具有相同的行為。 moby/moby#49241
  • Go-SDK: pkg/system: 棄用 MkdirAll。此函式為 Windows GUID 卷路徑提供了自定義處理。Go 標準庫在 go1.22 及更高版本中已支援此類路徑的處理,此函式現為 os.MkdirAll 的別名,應改用後者。此別名將在下一版本中移除。 moby/moby#49162
  • Go-SDK: 棄用 pkg/parsers.ParseKeyValueOptmoby/moby#49177
  • Go-SDK: 棄用 pkg/parsers.ParseUintListMaximum, pkg/parsers.ParseUintList。這些實用工具僅在內部使用,並將在下一版本中移除。 moby/moby#49222
  • Go-SDK: 棄用 api/type.IDResponse,轉而使用 container.CommitResponsecontainer.ExecCreateResponse,它們目前是別名,但在未來版本中可能會成為不同的型別。此型別將在下一版本中移除。 moby/moby#49446
  • Go-SDK: 棄用 api/types/container.ContainerUpdateOKBody,轉而使用 UpdateResponse。此型別將在下一版本中移除。 moby/moby#49442
  • Go-SDK: 棄用 api/types/container.ContainerTopOKBody,轉而使用 TopResponse。此型別將在下一版本中移除。 moby/moby#49442
  • Go-SDK: pkg/jsonmessage: 修復 ProgressMessage, ErrorMessage 的棄用問題,它們分別在 Docker v0.6.0 和 v0.7.1 中被棄用。 moby/moby#49447
  • GraphDriverDataapi/types 移至 api/types/storage。舊型別已棄用,並將在下一版本中移除。 moby/moby#48108
  • RequestPrivilegeFuncapi/types 移至 api/types/registry。舊型別已棄用,並將在下一版本中移除。 moby/moby#48119
  • api/types 移至 api/types/container - NetworkSettings, NetworkSettingsBase, DefaultNetworkSettings, SummaryNetworkSettings, Health, HealthcheckResult, NoHealthcheck, Starting, HealthyUnhealthy 常量, MountPoint, Port, ContainerState, Container, ContainerJSONBase, ContainerJSON, ContainerNode。舊型別已棄用,並將在下一版本中移除。 moby/moby#48108
  • api/types 移至 api/types/image - ImageInspect, RootFS。舊型別已棄用,並將在下一版本中移除。 moby/moby#48108
  • GET /info 端點中的 ContainerdCommit.Expected, RuncCommit.ExpectedInitCommit.Expected 欄位已棄用,並將在 API v1.49 中省略。 moby/moby#48478
  • api/types/registry: 棄用 ServiceConfig.AllowNondistributableArtifactsCIDRsServiceConfig.AllowNondistributableArtifactsHostnames 欄位。這些欄位將在下一版本中移除。 moby/moby#49065
  • api/types/system/Commit.Expected 欄位已棄用,不應再使用。 moby/moby#48478
  • daemon/graphdriver: 棄用 GetDriver() moby/moby#48079
  • libnetwork/iptables: 棄用 Passthrough。此函式僅在內部使用,並將在下一版本中移除。 moby/moby#49115
  • pkg/directory.Size() 函式已棄用,並將在下一版本中移除。 moby/moby#48057
  • registry: 棄用 APIEndpoint.TrimHostName;現在對遠端名稱無條件地修剪主機名。此欄位將在下一版本中移除。 moby/moby#49005
  • daemon.json 中的 allow-nondistributable-artifacts 欄位。設定任一選項將不再生效,但會新增一個棄用警告日誌以提高對棄用的意識。此警告計劃在下一版本中變為錯誤。 moby/moby#49065
頁面選項