Docker Engine 28 版本發行說明

此頁面描述 Docker Engine 28 版本的最新變更、新增功能、已知問題與修復內容。

欲瞭解更多資訊關於

28.4.0

2025-09-03

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

新增功能

  • 允許 Docker CLI 在 docker context 元數據中存在鍵值對 ("GODEBUG":"...") 時,設定 GODEBUG 環境變數。docker/cli#6399

錯誤修正與增強功能

  • 新增 docker pulldocker image pull 的 Shell 自動補全功能。docker/cli#6420
  • 修復 v28.3.3 中的一個迴歸問題,若客戶端未發送 X-Registry-Auth 標頭,可能導致 docker push 發生 panic。moby/moby#50738
  • Windows:可能修復了拉取映像時出現「拒絕存取」(access denied) 錯誤的問題。moby/moby#50871
  • containerd 映像儲存庫:修復對本地建置的非原生映像呼叫 docker history 時,因 snapshot X does not exist 而失敗的問題。moby/moby#50875
  • containerd 映像儲存庫:修復 docker image prune,使其發出正確的 untagdelete 事件,並僅列出已刪除映像的根摘要 (root digests) 而非每個 blob。moby/moby#50837
  • 移除因驗證失敗導致 docker pushdocker pull 後出現的互動式登入提示。docker/cli#6256

打包更新

網路

  • 修復可能導致在即時還原 (live-restore) 時容器重新啟動緩慢的問題。moby/moby#50829

API

Go SDK

棄用項目

  • 棄用對 --tlscacert--tlscert--tlskey 命令列旗標引號值的特殊處理。docker/cli#6291
  • 將舊版連結環境變數 (DOCKER_KEEP_DEPRECATED_LEGACY_LINKS_ENV_VARS) 在 v28.4 標記為已棄用,並預計於 v30.0 移除。docker/cli#6309
  • Go-SDK:棄用 NetworkSettingsBase.Bridge 欄位、NetworkSettingsBase 結構,以及 DefaultNetworkSettings 的所有欄位和 DefaultNetworkSettings 結構。moby/moby#50839
  • Go-SDK:api/types:build.CacheDiskUsagecontainer.DiskUsageimages.DiskUsagevolumes.DiskUsage 現已棄用,並將於下一個主要版本中移除。moby/moby#50768
  • Go-SDK:cli-plugins/manager:棄用 ReexecEnvvardocker/cli#6411
  • Go-SDK:cli-plugins/manager:棄用註釋別名(CommandAnnotationPluginCommandAnnotationPluginVendorCommandAnnotationPluginVersionCommandAnnotationPluginInvalidCommandAnnotationPluginCommandPath),改用 cli-plugins/manager/metadata 中的對應項目。docker/cli#6298
  • Go-SDK:cli-plugins/manager:棄多元數據別名(NamePrefixMetadataSubcommandNameHookSubcommandNameMetadataReexecEnvvar),改用 cli-plugins/manager/metadata 中的對應項目。docker/cli#6269
  • Go-SDK:cli-plugins/manager:移除僅供內部使用的 Candidate 介面。docker/cli#6269
  • Go-SDK:cli-plugins/manager:移除僅供內部使用的 NewPluginError 函數。docker/cli#6269
  • Go-SDK:cli-plugins/manager:移除已棄用的 ResourceAttributesEnvvar 常數。docker/cli#6269
  • Go-SDK:cli/command/builder:棄用 NewBuilderCommandNewBakeStubCommand。這些函數將於下一個版本移除。docker/cli#6312
  • Go-SDK:cli/command/builder:棄用 NewPruneCommanddocker/cli#6343
  • Go-SDK:cli/command/checkpoint:棄用 NewCheckpointCommand。此函數將於下一個版本移除。docker/cli#6312
  • Go-SDK:cli/command/checkpoint:棄用 NewFormatFormatWritedocker/cli#6341
  • Go-SDK:cli/command/completion:棄用 NoCompletedocker/cli#6405
  • Go-SDK:cli/command/completion:移除已棄用的 ValidArgsFndocker/cli#6259
  • Go-SDK:cli/command/config:棄用 NewConfigCommand。此函數將於下一個版本移除。docker/cli#6312
  • Go-SDK:cli/command/config:棄用 NewFormatFormatWriteInspectFormatWritedocker/cli#6341
  • Go-SDK:cli/command/config:棄用 RunConfigCreateCreateOptionsRunConfigInspectInspectOptionsRunConfigListListOptionsRunConfigRemoveRemoveOptionsdocker/cli#6369
  • Go-SDK:cli/command/container:棄用 NewBuildCommandNewPullCommandNewPushCommandNewImagesCommandNewImageCommandNewHistoryCommandNewImportCommandNewLoadCommandNewRemoveCommandNewSaveCommandNewTagCommandNewPruneCommand。這些函數將於下一個版本移除。docker/cli#6312
  • Go-SDK:cli/command/container:棄用 NewDiffFormatDiffFormatWrite。這些函數僅供內部使用,將於下一個版本移除。docker/cli#6341
  • Go-SDK:cli/command/container:棄用 NewRunCommandNewExecCommandNewPsCommandNewContainerCommandNewAttachCommandNewCommitCommandNewCopyCommandNewCreateCommandNewDiffCommandNewExportCommandNewKillCommandNewLogsCommandNewPauseCommandNewPortCommandNewRenameCommandNewRestartCommandNewRmCommandNewStartCommandNewStatsCommandNewStopCommandNewTopCommandNewUnpauseCommandNewUpdateCommandNewWaitCommandNewPruneCommand。這些函數將於下一個版本移除。docker/cli#6312
  • Go-SDK:cli/command/context:棄用 NewContextCommand。此函數將於下一個版本移除。docker/cli#6312
  • Go-SDK:cli/command/context:棄用 RunCreateCreateOptionsdocker/cli#6403
  • Go-SDK:cli/command/context:棄用 RunExportExportOptionsdocker/cli#6403
  • Go-SDK:cli/command/context:棄用 RunImportdocker/cli#6403
  • Go-SDK:cli/command/context:棄用 RunRemoveRemoveOptionsdocker/cli#6403
  • Go-SDK:cli/command/context:棄用 RunUpdateUpdateOptionsdocker/cli#6403
  • Go-SDK:cli/command/context:棄用 RunUsedocker/cli#6403
  • Go-SDK:cli/command/image:棄用 AuthResolver 工具。docker/cli#6357
  • Go-SDK:cli/command/image:棄用 NewHistoryFormatHistoryWritedocker/cli#6341, docker/cli#6341
  • Go-SDK:cli/command/manifest:棄用 NewManifestCommand。此函數將於下一個版本移除。docker/cli#6312
  • Go-SDK:cli/command/network:棄用 NewFormatFormatWritedocker/cli#6341
  • Go-SDK:cli/command/network:棄用 NewNetworkCommand。這些函數將於下一個版本移除。docker/cli#6312
  • Go-SDK:cli/command/node:棄用 NewFormatFormatWriteInspectFormatWritedocker/cli#6341
  • Go-SDK:cli/command/node:棄用 NewNodeCommand。此函數將於下一個版本移除。docker/cli#6312
  • Go-SDK:cli/command/plugin:棄用 NewFormatFormatWritedocker/cli#6341
  • Go-SDK:cli/command/plugin:棄用 NewPluginCommand。此函數將於下一個版本移除。docker/cli#6312
  • Go-SDK:cli/command/registry:棄用 NewLoginCommandNewLogoutCommandNewSearchCommand。這些函數將於下一個版本移除。docker/cli#6312
  • Go-SDK:cli/command/registry:棄用 NewSearchFormatSearchWritedocker/cli#6341
  • Go-SDK:cli/command/registry:棄用 OauthLoginEscapeHatchEnvVar 常數。docker/cli#6413
  • Go-SDK:cli/command/secret:棄用 NewFormatFormatWriteInspectFormatWritedocker/cli#6341
  • Go-SDK:cli/command/secret:棄用 NewSecretCommand。此函數將於下一個版本移除。docker/cli#6312
  • Go-SDK:cli/command/service:棄用 NewFormatInspectFormatWritedocker/cli#6341
  • Go-SDK:cli/command/service:棄用 NewServiceCommand。此函數將於下一個版本移除。docker/cli#6312
  • Go-SDK:cli/command/stack:棄用 NewStackCommand。此函數將於下一個版本移除。docker/cli#6312
  • Go-SDK:cli/command/stack:棄用 RunListRunServicesdocker/cli#6391
  • Go-SDK:cli/command/swarm:棄用 NewSwarmCommand。此函數將於下一個版本移除。docker/cli#6312
  • Go-SDK:cli/command/system:棄用 NewVersionCommandNewInfoCommandNewSystemCommandNewEventsCommandNewInspectCommand。這些函數將於下一個版本移除。docker/cli#6312
  • Go-SDK:cli/command/task:棄用 NewTaskFormatFormatWritedocker/cli#6341
  • Go-SDK:cli/command/trust:棄用 NewTrustCommand。此函數將於下一個版本移除。docker/cli#6312
  • Go-SDK:cli/command/trust:棄用 SignedTagInfoSignerInfoNewTrustTagFormatNewSignerInfoFormatTagWriteSignerInfoWritedocker/cli#6341
  • Go-SDK:cli/command/volume:棄用 NewVolumeCommandNewPruneCommand。這些函數將於下一個版本移除。docker/cli#6312
  • Go-SDK:cli/command:移除僅供內部使用的 AddTrustSigningFlagsAddTrustVerificationFlagsAddPlatformFlag 工具。docker/cli#6311
  • Go-SDK:cli/command:移除已棄用的 ConfigureAuth 工具。docker/cli#6257
  • Go-SDK:cli/command:移除已棄用的 CopyToFile 工具。docker/cli#6257
  • Go-SDK:cli/config/types:更新 AuthConfig.Email 欄位的棄用訊息。docker/cli#6392
  • Go-SDK:cli:棄用 VisitAllDisableFlagsInUseLine 工具。這些工具僅供內部使用,將於下一個版本移除。docker/cli#6276
  • Go-SDK:cli:移除僅供內部使用的 HasCompletionArg 工具。docker/cli#6276
  • Go-SDK:棄用 cli/command.RegistryAuthenticationPrivilegedFuncdocker/cli#6256
  • Go-SDK:棄用 cli/command/stack/formatterdocker/cli#6391
  • Go-SDK:棄用 cli/command/stack/loaderdocker/cli#6391
  • Go-SDK:棄用 cli/command/stack/optionsdocker/cli#6391
  • Go-SDK:棄用 cli/command/stack/swarmdocker/cli#6391
  • Go-SDK:opts:棄用 NewNamedListOptsRefNewNamedMapOptsNamedListOptsNamedMapOptsNamedOption。這些型別與函數已不再使用,將於下一個版本移除。docker/cli#6292
  • Go-SDK:opts:棄用 ParseEnvFile,改用 kvfile.Parsedocker/cli#6381
  • Go-SDK:opts:棄用 QuotedString。此工具已不再使用,將於下一個版本移除。docker/cli#6275
  • Go-SDK:opts:棄用 ValidateHost 工具。此函數已不再使用,將於下一個版本移除。docker/cli#6280
  • Go-SDK:pkg/jsonmessage:棄用 JSONMessage.FromJSONMessage.TimeJSONMessage.TimeNano 欄位,因為 API 不再為進度訊息回傳這些欄位。請改用 events.Message 型別來解組 (unmarshal) /events 回應。moby/moby#50762
  • Go-SDK:cli/registry/client 套件已棄用,將於下一個版本移除。docker/cli#6313

28.3.3

2025-07-29

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

安全性

此版本修復了一個問題:在重新載入 firewalld 後,已發布的容器連接埠即使原本設定為僅透過迴路位址 (loopback address) 存取,仍可直接從本機網路存取。CVE-2025-54388 / GHSA-x4rx-4gw3-53p4 / moby/moby#50506

打包更新

28.3.2

2025-07-09

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

錯誤修正與增強功能

  • 修復鎖定遠端 daemon 時 --use-api-socket 無法正確運作的問題。docker/cli#6157
  • 修復啟用除錯日誌時,會印出無謂「otel error」日誌的問題。docker/cli#6160
  • 透過 SSH 連線至遠端 daemon 時,為 SSH 引數加上引號,以避免非預期的展開。docker/cli#6147
  • 當執行 docker logindocker logout 且已設定 DOCKER_AUTH_CONFIG 時發出警告。docker/cli#6163

打包更新

28.3.1

2025-07-02

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

打包更新

28.3.0

2025-06-24

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

新增功能

錯誤修正與增強功能

  • 確保當使用 /containers/{id}/stop API 停止容器時(在 API 回應之前),daemon 資料庫中的容器狀態(由 /containers/json API 使用)是最新的。moby/moby#50136
  • 修復 docker image inspect 省略空欄位的問題。moby/moby#50135
  • 修復停用 containerd 映像儲存庫時,docker images --tree 未將映像標記為使用中的問題。docker/cli#6140
  • 修復在需要驗證時,非互動模式下因提示輸入登入憑證而導致 docker pull/push 卡住的問題。docker/cli#6141
  • 修復節點離開 Swarm 時潛在的資源洩漏問題。moby/moby#50115
  • 修復登入其他登錄檔 (registries) 時,docker pull 的登入提示會顯示 Docker Hub 特定提示的迴歸問題。docker/cli#6135
  • 修復在增加具有放置偏好 (placement preferences) 的服務規模後,Swarm 中的所有新任務可能永久卡在 PENDING 狀態的問題。moby/moby#50211
  • 移除 Docker 23.0 中意外引入的一個未記錄、隱藏的頂層 docker remove 命令。docker/cli#6144
  • dockerd --validate 中驗證 registry-mirrors 設定,並改進無效鏡像的錯誤訊息。moby/moby#50240
  • dockerd-rootless-setuptool.sh:修復當 subuid/subgid 系統需求未滿足時,腳本默默返回且無錯誤訊息的問題。moby/moby#50059
  • containerd 映像儲存庫:修復 docker push 未在遠端儲存庫建立標籤的問題。moby/moby#50199
  • containerd 映像儲存庫:改進 docker pull/push 期間 token 伺服器回傳錯誤的處理方式。moby/moby#50176

打包更新

網路

API

  • 將 API 版本更新至 1.51。moby/moby#50145
  • GET /images/json 現在將所有映像的 Containers 欄位值設定為使用該映像的容器計數。moby/moby#50146

棄用項目

  • GET /images/{name}/json 回應中的空白/nil 映像設定欄位現已棄用,將於 v29.0 移除。docker/cli#6129
  • api/types/container:棄用 ExecOptions.Detach。此欄位未使用,將於未來的版本中移除。moby/moby#50219
  • pkg/idtools:棄用 IdentityMappingIdentity.Chownmoby/moby#50210

28.2.2

2025-05-30

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

錯誤修正與增強功能

  • containerd 映像儲存庫:修復導致 docker build --push 失敗的迴歸問題。此修復撤銷了對 docker build 未將覆寫映像保存為懸空 (dangling) 映像的修正。moby/moby#50105

網路

  • 在建立 iptables DOCKER-USER 鏈時,不再加入明確的 RETURN 規則,允許使用者追加或插入自己的規則。升級時不會移除現有規則,但在重新啟動後不會再被取代。moby/moby#50098

28.2.1

2025-05-29

打包更新

28.2.0

2025-05-28

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

注意

RHEL 套件目前無法使用,將於稍後發布。

新增功能

  • 新增 {{.Platform}} 作為 docker ps 的格式化選項,以顯示容器執行之映像的平台。docker/cli#6042
  • 新增當使用 docker run/create 搭配 -v/--volume--mount type=bind 選項時,對掛載來源 (bind mount sources) 使用相對父路徑 (../) 的支援。docker/cli#4966
  • CDI 現已預設啟用。moby/moby#49963
  • docker info 中顯示已發現的 CDI 裝置。docker/cli#6078
  • docker image rm:新增 --platform 選項,以移除多平台映像中的變體。docker/cli#6109
  • containerd 映像儲存庫:初步支援在 Windows 上使用 BuildKit 建置 Windows 容器映像(需要使用 DOCKER_BUILDKIT=1 選擇性加入)。moby/moby#49740

錯誤修正與增強功能

  • 為 fluentd 日誌驅動程式新增一個日誌選項 (fluentd-write-timeout),允許為 fluentd 連線指定寫入逾時。moby/moby#49911
  • 新增對實驗性 --use-api-socket 選項的 DOCKER_AUTH_CONFIG 支援。docker/cli#6019
  • 修復若指定不存在的使用者或群組時,docker exec 會等待 10 秒的問題。moby/moby#49868
  • 修復 docker swarm init 忽略 --external-cacacert 選項的問題。docker/cli#5995
  • 修復若設定檔 (~/.docker/config.json) 為相對符號連結時,CLI 無法正確儲存的問題。docker/cli#5282
  • 修復具有 --restart always 策略且使用 CDI 裝置的容器在 daemon 重啟後無法啟動的問題。moby/moby#49990
  • 修復 Shell 自動補全,即使旗標可以設定多次,也只補全一次的問題。docker/cli#6030
  • 修復 Swarm CSI 驅動程式出現 plugin does not implement PluginAddr interface 錯誤的問題。moby/moby#49961
  • 改進 docker login 對無效選項的錯誤訊息。docker/cli#6036
  • 確保在 CLI 被強制終止時還原終端狀態。docker/cli#6058
  • 將預設 seccomp 設定檔更新至 libseccomp v2.6.0。新增的系統呼叫包括:listmountstatmountlsm_get_self_attrlsm_list_moduleslsm_set_self_attrmsealuretproberiscv_hwprobegetxattratlistxattratremovexattratsetxattrat。這可防止容器在使用這些呼叫時收到 EPERM 錯誤。moby/moby#50077
  • docker inspect:新增 Shell 自動補全,改進 --type 的旗標說明並改進驗證。docker/cli#6052
  • containerd 映像儲存庫:預設啟用 BuildKit 垃圾回收。moby/moby#49899
  • containerd 映像儲存庫:修復 docker build 未將覆寫映像保存為懸空映像的問題。moby/moby#49702
  • containerd 映像儲存庫:修復 docker system df 回報負值可回收空間的問題。moby/moby#49707
  • containerd 映像儲存庫:修復推送多平台映像時發出重複 PUT 請求的問題。moby/moby#49949

打包更新

網路

  • 新增橋接網路選項 "com.docker.network.bridge.trusted_host_interfaces",接受以冒號分隔的介面名稱清單。這些介面可以直接存取容器 IP 位址上的已發布連接埠。moby/moby#49832
  • 新增 daemon 選項 "allow-direct-routing",以停用過濾來自主機外部並直接傳往容器的封包。moby/moby#49832
  • 若網路建立請求中已透過 EnableIPv4EnableIPv6 覆寫,則在 inspect 輸出中不顯示網路選項 com.docker.network.enable_ipv4com.docker.network.enable_ipv6moby/moby#49866
  • 修復 daemon 重啟後網路刪除可能失敗的問題,錯誤訊息為「has active endpoints」且列出的端點名稱為空白。moby/moby#49901
  • 修復 docker network inspect --verbose 有時可能導致 daemon 當機的問題。moby/moby#49937
  • 修復覆蓋網路的負載平衡器 IP 位址在 Swarm 缺乏 ingress 網路的情況下,某些情況無法釋放的問題。moby/moby#49948
  • 提高 NetworkDB 在繁忙叢集與高損耗網路中的可靠性。moby/moby#49932
  • 改進 NetworkDB 的可靠性與收斂速度。moby/moby#49939

API

  • DELETE /images/{name} 現在支援 platforms 查詢參數。它接受一個 JSON 編碼的 OCI 平台物件陣列,允許選擇特定平台來刪除內容。moby/moby#49982
  • GET /info 現在包含 DiscoveredDevices 欄位。這是一個 DeviceInfo 物件陣列,每個物件提供有關由裝置驅動程式發現的裝置詳細資訊。moby/moby#49980

Go SDK

  • api/types/container:新增 ContainerState 及容器狀態常數。moby/moby#49965
  • api/types/container:將 Summary.State 變更為 ContainerStatemoby/moby#49991
  • api/types/container:為健康狀態常數定義 HealthStatus 型別。moby/moby#49876
  • api/types:棄用 BuildResultImageBuildOptionsImageBuildOutputImageBuildResponseBuilderVersionBuilderV1BuilderBuildKi,這些已遷移至 api/types/buildmoby/moby#50025

棄用項目

  • API:已棄用:GET /images/{name}/json 不再回傳以下欄位:ConfigHostnameDomainnameAttachStdinAttachStdoutAttachStderrTtyOpenStdinStdinOnceImageNetworkDisabled(除非已設定,否則已省略)、MacAddress(除非已設定,否則已省略)、StopTimeout(除非已設定,否則已省略)。這些額外欄位因實作細節而包含在回應中,但並非映像設定的一部分,已在 API v1.46 中標記為棄用,現在已省略。moby/moby#48457
  • Go-SDK:棄用 builder/remotecontext.Rel()。此函數在舊版 Go 中是必要的,但現在可以由 filepath.Rel() 取代。moby/moby#49843
  • Go-SDK:api/types:棄用 BuildCachePruneOptions,改用 api/types/builder.CachePruneOptionsmoby/moby#50015
  • Go-SDK:api/types:棄用 BuildCachePruneReport,改用 api/types/builder.CachePruneReportmoby/moby#50015
  • Go-SDK:api/types:棄用 NodeListOptionsNodeRemoveOptionsServiceCreateOptionsServiceUpdateOptionsRegistryAuthFromSpecRegistryAuthFromPreviousSpecServiceListOptionsServiceInspectOptionsSwarmUnlockKeyResponse,這些已遷移至 api/types/swarmmoby/moby#50027
  • Go-SDK:api/types:棄用 SecretCreateResponseSecretListOptionsConfigCreateResponseConfigListOptions,這些已遷移至 api/types/swarm。moby/moby#50024
  • Go-SDK:client:棄用 IsErrNotFoundmoby/moby#50012
  • Go-SDK:container:棄用 IsValidHealthString,改用 api/types/container.ValidateHealthStatusmoby/moby#49893
  • Go-SDK:container:棄用 StateStatusWaitCondition 及相關的 WaitConditionNotRunningWaitConditionNextExitWaitConditionRemoved 常數,改用 api/types/container 中的對應項目。moby/moby#49874
  • Go-SDK:opts:棄用 ListOpts.GetAll,改用 ListOpts.GetSlicedocker/cli#6032
  • docker search 中移除已棄用的 IsAutomated 格式化佔位符。docker/cli#6091
  • 移除從非 OCI 相容的 docker.pkg.github.com 登錄檔拉取映像的後備機制。moby/moby#50094
  • 移除對拉取舊版 v2, schema 1 映像的支援,並移除 DOCKER_ENABLE_DEPRECATED_PULL_SCHEMA_1_IMAGE 環境變數。moby/moby#50036, moby/moby#42300
  • GET /info 回應中的 BridgeNfIptablesBridgeNfIp6tables 欄位已在 API v1.48 中棄用,現在於 API v1.50 中省略。moby/moby#49904
  • errdefs:棄用 errdefs.FromStatusCode。請改用 containerd 的 errhttp.ToNativemoby/moby#50030

28.1.1

2025-04-18

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

錯誤修正與增強功能

  • 修復 dockerd-rootless-setuptool.sh 錯誤回報遺失 iptables 的問題。moby/moby#49833
  • containerd 映像儲存庫:修復使用包含零大小 tar 標頭的壓縮檔執行 docker load 時可能導致的 daemon 當機問題。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 socket,並與容器分享來自主機的憑證。docker/cli#5858
  • docker image inspect 現在支援 --platform 旗標,以檢查多平台映像的特定平台。docker/cli#5934

錯誤修正與增強功能

  • 新增 context 名稱的 CLI Shell 自動補全。docker/cli#6016
  • 修復 docker images --tree 在計算總映像內容大小時,未包含非容器映像內容大小的問題。docker/cli#6000
  • 修復 docker load 未能保留已取代映像的問題。moby/moby#49650
  • 修復登入自訂登錄檔時的 docker login 提示。docker/cli#6015
  • 修復 docker stats 在 CPU 核心數較高的機器上無法正常運作的問題。moby/moby#49734
  • 修復與私有儲存庫互動時導致 docker pull/push 失敗的迴歸問題。docker/cli#5964
  • 修復在沒有 ip_tables 核心模組的主機上阻止 rootless Docker 設定的問題。moby/moby#49727
  • 修復重新載入 firewalld 後,可能導致多餘 iptables 規則被還原且永遠無法刪除的問題。moby/moby#49728
  • 改進 docker service scale 的 CLI 補全。docker/cli#5968
  • docker images --tree 現在預設隱藏未標記 (untagged) 和懸空 (dangling) 的映像。docker/cli#6000
  • 如果無法建立與 Docker daemon 的連線,docker system info 將提供退出代碼。docker/cli#5918
  • containerd 映像儲存庫:修復使用 BuildKit 建置時未發出 image tag 事件的問題。moby/moby#49678
  • containerd 映像儲存庫:改進 docker push/pull 對遠端登錄檔錯誤的處理。moby/moby#49770
  • containerd 映像儲存庫:顯示非層級 (non-layer) 映像 blob 的拉取進度。moby/moby#49746

打包更新

網路

  • 修復導致 Swarm 容器的主機連接埠對應在 docker psdocker inspect 中重複顯示的錯誤。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,其中包含有關 daemon 防火牆設定的資訊。moby/moby#49761

Go SDK

棄用項目

  • API:已棄用 API v1.49 中省略 GET /info 回應中 RegistryConfig 結構的 AllowNondistributableArtifactsCIDRsAllowNondistributableArtifactsHostnames 欄位。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
  • 修復 docker buildx prune 搭配 --min-free-space 時可能發生的錯誤。moby/moby#49623
  • 修復關閉容器時 daemon 日誌中出現虛假 io: read/write on closed pipe 錯誤的問題。moby/moby#49590
  • 修復 Docker daemon 若 containerd socket 無法立即取得時,過早失敗的問題。moby/moby#49603
  • 預設遮罩容器 /proc/sys 中的 Linux 熱中斷 (thermal interrupt) 資訊。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 不一致回報雙堆疊 (dual-stack) 連接埠對應的錯誤。moby/moby#49657
  • 修復導致 docker-proxy 停止將 UDP 資料報轉發至容器的錯誤。moby/moby#49649
  • 修復導致 docker-proxy 急於關閉與容器的 UDP 連線,並導致來源位址不必要地變更的錯誤。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:棄用並內部化 TrustedPushdocker/cli#5894
  • Go-SDK:cli/command:棄用 Cli.NotaryClient:請改用 trust.GetNotaryRepository。此方法已不再使用,將於下一個版本移除。docker/cli#5885
  • Go-SDK:cli/command:棄用 Cli.RegistryClient。此方法僅供內部使用,將於下一個版本移除。請改用 client.NewRegistryClientdocker/cli#5889, docker/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
  • 允許 daemon 在 IPv6 已停用的主機上啟動,而無需設定 --ip6tables=falsemoby/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_netnetilter_xt_set 時回報的錯誤。moby/moby#49524
  • 將大部分 Docker 的 iptables 規則移出 filter-FORWARD 鏈,以便其他應用程式可以自由追加必須接在 Docker 規則之後的規則。moby/moby#49518
  • 更新 --help 輸出和 man page,以說明哪些選項僅適用於預設橋接網路。moby/moby#49522

錯誤修正與增強功能

  • 修復 docker context create 在使用 "skip-tls-verify" 選項時總是回傳錯誤的問題。docker/cli#5850
  • 修復 Shell 自動補全建議服務與節點時使用 ID 而非名稱的問題。docker/cli#5848
  • 修復當 docker exec/run 回傳非零狀態時,無意中將退出狀態印出到標準錯誤輸出的問題。docker/cli#5854
  • 修復迴歸問題:RootlessKit 連接埠驅動程式 "slirp4netns" 不支援協定 "tcp"。 moby/moby#49514
  • containerd 映像檔儲存庫:修復 docker inspect 無法顯示缺失部分平台層級之多平台映像檔的問題。 moby/moby#49533
  • containerd 映像檔儲存庫:修復 docker images --tree 顯示錯誤內容大小的問題。 moby/moby#49535
  • 修復 i386 架構下的編譯問題 moby/moby#49526

打包更新

API

  • containerd 映像檔儲存庫:修復 GET /images/json?manifests=1 未能為僅含索引(index-only)的映像檔填寫 Manifests 欄位的問題。 moby/moby#49533
  • containerd 映像檔儲存庫:修復 GET /images/json 和 /images/<name>/json 中的 Size.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 現在會顯示元數據標籤。 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 名稱伺服器,現在將永遠從宿主機的網路命名空間(network namespace)進行存取。 moby/moby#48290
    • 當宿主機的 /etc/resolv.conf 未包含任何名稱伺服器且沒有 --dns 覆蓋設定時,除了預設的 bridge 網路與建置容器外,將不再使用 Google 的 DNS 伺服器。
  • Bridge 與 macvlan 網路中的容器介面現在使用隨機生成的 MAC 位址。 moby/moby#48808
    • 當介面啟動時將會發送免費 ARP(Gratuitous ARP)/鄰居公告(Neighbour Advertisement)訊息,以便在重複使用 IP 位址時,將其與新生成的 MAC 位址關聯。
    • 預設 bridge 網路中的 IPv6 位址現在由 IPAM 指派,而非從 MAC 位址推導。
  • 已棄用的 OCI prestart 掛鉤(hook)現在僅供建置容器使用。對於其他容器,網路介面會在任務建立完成後、容器任務啟動前加入網路命名空間。 moby/moby#47406
  • docker rundocker container createdocker network connect 新增 gw-priority 選項。此選項將由引擎用來判定哪個網路為容器提供預設閘道。在 docker run 中,此選項僅能透過延伸的 --network 語法使用。 docker/cli#5664
  • 新增網路標籤 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

Bridge 網路中的連接埠發布(Port publishing)

  • dockerd 現在要求 Linux 核心支援 ipsetmoby/moby#48596
    • 用於實作連接埠發布與網路隔離的 iptablesip6tables 規則已進行大幅修改。這實現了後述的部分功能變更,也是未來重構以支援原生 nftables 的第一步。 moby/moby#48815
    • 若有必要降級至舊版 daemon,則需要對新規則進行一些手動清理。最簡單且保險的方法是重新啟動宿主機,或在啟動舊版 daemon 前,使用 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
      • 若您之前將 iptables filter-FORWARD 政策設定為 ACCEPT,且需要恢復對未發布連接埠的存取,請同時刪除 DOCKER 鏈中每個 bridge 網路的規則。例如:iptables -D DOCKER ! -i docker0 -o docker0 -j DROP
  • 修復一項安全漏洞:該漏洞允許遠端主機直接連線至容器的已發布連接埠。 moby/moby#49325
  • 修復一項安全漏洞:該漏洞允許相鄰主機連線至對應於回送(loopback)位址的連接埠。 moby/moby#49325
  • 修復一個導致無法將連接埠發布至鏈結本地(link-local)位址的問題。 moby/moby#48570
  • 容器發布的 UDP 連接埠現在可透過宿主機的公用 IP 位址,被其他網路上的容器可靠地存取。 moby/moby#48571
  • Docker 現在僅在宿主機本身啟用 IP 轉發(sysctls net.ipv6.conf.all.forwardingnet.ipv6.conf.default.forwarding)時,才會將 filter 表中 FORWARD 鏈的 ip6tables 政策設定為 DROP。這現在與現有的 IPv4 行為保持一致。 moby/moby#48594
    • 若您的宿主機已啟用 IPv6 轉發,但過去依賴 Docker 將 ip6tables filter-FORWARD 政策設為 DROP,您可能需要更新宿主機的設定以確保其安全性。
  • 對於未明確使用 p/-publish 暴露出的容器連接埠,現在已在 DOCKER iptables 鏈中封鎖直接路由存取。 moby/moby#48724
    • 若您的宿主機之前預設的 iptables filter-FORWARD 政策保持為 ACCEPT,且仍需從遠端主機對容器未發布的連接埠進行直接路由存取,選項如下:
      • 發布您需要的連接埠。
      • 使用下方所述的新選項 gateway_mode_ipv[46]=nat-unprotected
    • 發布至宿主機位址的容器連接埠,將持續透過 NAT 或使用者層級代理,經由該宿主機位址進行存取。
    • 未發布的容器連接埠仍可從 Docker 宿主機,透過容器的 IP 位址直接進行存取。
  • gateway_mode_ipv[46]=routed 建立的網路,現在可從同一 Docker 宿主機上執行的其他 bridge 網路存取,也可從宿主機外部存取。 moby/moby#48596
  • Bridge 驅動程式選項 com.docker.network.bridge.gateway_mode_ipv4com.docker.network.bridge.gateway_network.bridge.gateway_mode_ipv6 現在接受 nat-unprotected 模式。 moby/moby#48597
    • nat-unprotected 與預設的 nat 模式相似,但不會設定任何針對單一連接埠/協定的規則。這意味著遠端主機可透過直接路由存取容器上的任何連接埠。
  • 當網路同時為 internal 時,Bridge 驅動程式選項 com.docker.network.bridge.gateway_mode_ipv4com.docker.network.bridge.gateway_mode_ipv6 現在接受 isolated 模式。 moby/moby#49262
    • internal 網路中,位址通常會指派給 bridge 裝置。因此,Docker 宿主機上的處理程序可以存取該網路,而網路內的容器可以存取該 bridge 位址上監聽的宿主機服務(包含監聽在「任何」宿主機位址,如 0.0.0.0:: 的服務)。
    • isolated 閘道模式建立的 internal bridge 網路,在 Docker 宿主機上不會擁有位址。
  • 當連接埠對應包含無法使用的宿主機 IP 位址或連接埠號(因為使用 --gateway_mode_ipv[46] 停用了宿主機的 NAT),容器建立將不再失敗。若在連線或中斷網路時閘道端點發生變化,可能會需要這些未使用的欄位。關於這些未使用欄位的訊息將會被記錄下來。 moby/moby#48575
  • 啟用使用者層級代理時,不再為容器自身已發布的連接埠建立 iptables nat-POSTROUTING 偽裝(masquerade)規則。 moby/moby#48854

IPv6

  • docker network create 新增 --ipv4 選項。若要停用網路的 IPv4 位址指派,請使用 docker network create --ipv4=false [...]docker/cli#5599
  • Daemon 選項 --ipv6daemon.json 中的 "ipv6": true)現在可以在沒有 fixed-cidr-v6 的情況下使用。 moby/moby#48319
  • IPAM 現在處理大於 "/64" 的子網路。 moby/moby#49223
  • 重複位址檢測(DAD)現在已針對指派給 bridge 網路所屬 bridge 的位址停用。 moby/moby#48609
  • 針對 host-gateway 進行修改,以與僅 IPv6 網路相容。 moby/moby#48807
    • 當在 --add-host 選項中使用特殊值 host-gateway 代替位址時,它會被 Docker 宿主機上的位址取代,以便能按名稱參照宿主機。所使用的位址屬於預設 bridge(通常為 docker0)。直至目前為止,它始終是一個 IPv4 位址,因為 bridge 網路上的所有容器都擁有 IPv4 位址。
    • 現在,若預設 bridge 網路啟用了 IPv6,將會為 IPv4 和 IPv6 位址建立 /etc/hosts 項目。因此,僅連線至僅 IPv6 網路的容器也可以按名稱存取宿主機。
    • --host-gateway-ip 選項會覆蓋用於取代 host-gateway 的位址。現在命令列允許使用兩個此類選項,以分別對應一個 IPv4 閘道與一個 IPv6 閘道。
    • daemon.json 檔案中,若要提供兩個位址,請使用 "host-gateway-ips"。例如:"host-gateway-ips": ["192.0.2.1", "2001:db8::1111"]

錯誤修正與增強功能

  • 預設將 IPv6 回送位址新增為不安全的登錄檔(insecure registry)。 moby/moby#48540
  • 新增對 dockerd 使用 Cobra 生成完成腳本(completion scripts)的支援。 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
  • 修復一個 bug:若容器名稱與另一個容器的 ID 相符,該容器在 daemon 啟動時無法恢復。 moby/moby#48669
  • 修復一個問題,防止 docker ps 顯示的部分 IPv6 位址無法被正確加上括號。 docker/cli#5468
  • 修復一個在 docker run 期間防止映像檔提取被取消的 bug。 docker/cli#5645
  • 修復以 Windows 服務執行 daemon 時的錯誤處理,以防止不正常的結束。 moby/moby#48518
  • 修復在使用 --attach stdout--attach stderr 相對於 stdin 時,docker run 輸出不一致的問題。docker run --attach stdin 現在若容器退出,則會同時退出。 docker/cli#5662
  • 修復透過 NSS 模組支援 subid 的 Rootless 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
  • 改進對 daemon 設定中 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 映像檔儲存庫:修復 commitimportbuild 未將被替換的映像檔保留為懸空(dangling)映像檔的問題。 moby/moby#48316
  • containerd 映像檔儲存庫:當請求的平台未載入時,使 docker load --platform 回傳錯誤。 moby/moby#48718
  • 修復 --link 選項的驗證。 docker/cli#5739
  • 新增對 network-diagnostic-port daemon 設定選項的驗證。 moby/moby#49305
  • 除非明確設定,否則在不需要的情況下,不再為閘道保留 IP 位址。具體而言:具有 com.docker.network.bridge.inhibit_ipv4 選項的「內部」bridge 網路、沒有父介面的 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(--bridge)推斷設定相關的問題。 moby/moby#48319
  • 移除功能旗標 windows-dns-proxy(於 26.1.0 版本引入,用於控制 Windows 容器至外部 DNS 解析器的轉發,以使 nslookup 運作)。該旗標已於 27.0.0 版本中預設啟用。 moby/moby#48738
  • 移除用於 SCTP 總和檢查碼(checksumming)的 iptables mangle 規則。該規則可透過在 daemon 環境中設定 DOCKER_IPTABLES_SCTP_CHECKSUM=1 來重新啟用。此覆蓋機制將在未來的版本中移除。 moby/moby#48149
  • 在大多數情況下,連線至 bridge 網路的速度變得更快。 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,允許指定自訂 OTel 追蹤選項。 moby/moby#49415
  • client:新增 HijackDialer 介面。 moby/moby#49388
  • client:新增 SwarmManagementAPIClient 介面,以描述所有與 Swarm 特定物件相關的 API 用戶端方法。 moby/moby#49388
  • client:新增 WithTraceOptions,允許指定自訂 OTel 追蹤選項。 moby/moby#49415
  • clientImageHistoryImageLoadImageSave 現在使用變長函數選項。 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.48moby/moby#48476
  • GET /images/{name}/json 回應現在回傳 Manifests 欄位,其中包含有關映像檔索引中包含的子資訊清單資訊。這包括平台特定清單與建置證明(build attestations)等內容。 moby/moby#48264
  • POST /containers/create 現在支援 image 類型的 Mount,用於將映像檔掛載至容器內。 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 描述元。此新欄位僅在 daemon 提供多平台映像檔儲存庫時才會填入。 moby/moby#48894
  • containerd 映像檔儲存庫:GET /containers/{name}/json 現在回傳 ImageManifestDescriptor 欄位,其中包含用於建立容器之映像檔的平台特定清單的 OCI 描述元。 moby/moby#48855
  • 新增除錯端點(GET /debug/varsGET /debug/pprof/GET /debug/pprof/cmdlineGET /debug/pprof/profileGET /debug/pprof/symbolGET /debug/pprof/traceGET /debug/pprof/{name}),現在也可以透過版本化 API 路徑(/v<API-version>/<endpoint>)進行存取。 moby/moby#49051
  • 修復 API 針對驗證錯誤回傳 500 狀態碼而非 400 的問題。 moby/moby#49217
  • 修復存檔端點 HEAD /containers/{name:.*}/archiveGET /containers/{name:.*}/archivePUT /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 欄位。GwPriority 欄位由 CLI 用於 docker rundocker network connect 的新 gw-priority 選項。 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 現在回傳與 /containers/{name}/json 中相同欄位一致的 ImageManifestDescriptor 欄位。此欄位僅在 daemon 提供多平台映像檔儲存庫時才會填入。 moby/moby#49407

已移除

  • Fluent logger 選項 fluentd-async-connect 已於 v20.10 棄用,現已移除。 moby/moby#46114
  • docker stopdocker restart 上的 --time 選項已棄用,並更名為 --timeoutdocker/cli#5485
  • Go-SDK: pkg/ioutils:移除從未使用的 NewReaderErrWrappermoby/moby#49258
  • Go-SDK: pkg/ioutils:移除已棄用的 BytesPipeNewBytesPipeErrClosedWriteCounterNewWriteCounterNewReaderErrWrapperNopFlushermoby/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 daemon 的 --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:移除已棄用的別名:ImagesPruneReportVolumesPruneReportNetworkCreateRequestNetworkCreateNetworkListOptionsNetworkCreateResponseNetworkInspectOptionsNetworkConnectNetworkDisconnectEndpointResourceNetworkResourceNetworksPruneReportExecConfigExecStartCheckContainerExecInspectContainersPruneReportContainerPathStatCopyToContainerOptionsContainerStatsImageSearchOptionsImageImportSourceImageLoadResponseContainerNodemoby/moby#48107
  • libnetwork/iptables:移除已棄用的 IPVIptablesIP6TablesPassthrough()moby/moby#49121
  • pkg/archive:移除已棄用的 CanonicalTarNameForPathNewTempArchiveTempArchivemoby/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:移除已棄用的 ConvertKVStringsToMapmoby/moby#48102
  • runconfig:移除已棄用的 ContainerConfigWrapperSetDefaultNetModeIfBlankDefaultDaemonNetworkModeIsPreDefinedNetworkmoby/moby#48102
  • container:移除已棄用的 ErrNameReservedErrNameNotReservedmoby/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 模組現在按需載入,不再於 daemon 啟動時載入,使這些欄位變得過時。 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
  • 棄用推送不可散布(non-distributable)構件的設定。 docker/cli#5724
  • 棄用 --allow-nondistributable-artifacts daemon 旗標以及 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:棄用 NewAtomicFileWriterAtomicWriteFileAtomicWriteSetNewAtomicWriteSet,改用 pkg/atomicwriter 的對應項目。 moby/moby#49171
  • Go-SDK: pkg/sysinfo:棄用 NumCPU。此工具與 runtime.NumCPU 行為相同。 moby/moby#49241
  • Go-SDK: pkg/system:棄用 MkdirAll。此函數針對 Windows GUID 磁碟區路徑提供自訂處理。此類路徑的處理現在由 Go 1.22 及更新版本的標準程式庫支援,此函數現在是 os.MkdirAll 的別名,應直接使用後者。此別名將在下一個版本中移除。 moby/moby#49162
  • Go-SDK: 棄用 pkg/parsers.ParseKeyValueOptmoby/moby#49177
  • Go-SDK: 棄用 pkg/parsers.ParseUintListMaximumpkg/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:修復對 ProgressMessageErrorMessage 的棄用,它們分別在 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/containerNetworkSettingsNetworkSettingsBaseDefaultNetworkSettingsSummaryNetworkSettingsHealthHealthcheckResultNoHealthcheckStartingHealthyUnhealthy 常數、MountPointPortContainerStateContainerContainerJSONBaseContainerJSONContainerNode。舊類型已棄用,將在下一個版本中移除。 moby/moby#48108
  • api/types 移至 api/types/imageImageInspectRootFS。舊類型已棄用,將在下一個版本中移除。 moby/moby#48108
  • GET /info 端點中的 ContainerdCommit.ExpectedRuncCommit.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
© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.