Docker Engine 版本 28 發行說明

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

有關更多資訊,請參閱:

28.4.0

2025-09-03

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

新增

  • 當鍵值對 (`"GODEBUG":"..."`) 存在於 docker 上下文元資料中時,允許 Docker CLI 設定 `GODEBUG` 環境變數。 docker/cli#6399

錯誤修復和增強

  • 新增 `docker pull` 和 `docker image pull` 的 shell 自動補全功能。 docker/cli#6420
  • 修復了 v28.3.3 中的一個迴歸問題,該問題可能導致客戶端未傳送 `X-Registry-Auth` 頭時 `docker push` 崩潰。 moby/moby#50738
  • Windows:潛在地修復了拉取映象時出現“訪問被拒絕”錯誤的問題。 moby/moby#50871
  • containerd 映象儲存:修復了在本地構建的非原生映象上呼叫 `docker history` 時,因 `snapshot X does not exist` 而失敗的問題。 moby/moby#50875
  • containerd 映象儲存:修復了 `docker image prune` 發出正確的 `untag` 和 `delete` 事件,並僅列出已刪除映象的根摘要而不是每個 blob 的問題。 moby/moby#50837
  • 在因缺少認證而失敗後,從 `docker push` 和 `docker pull` 中移除互動式登入提示。 docker/cli#6256

打包更新

網路

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.CacheDiskUsage`、`container.DiskUsage`、`images.DiskUsage` 和 `volumes.DiskUsage` 已棄用,並將在下一個主要版本中移除。 moby/moby#50768
  • Go-SDK:cli-plugins/manager:棄用 `ReexecEnvvar`。 docker/cli#6411
  • Go-SDK:cli-plugins/manager:棄用註釋別名 (`CommandAnnotationPlugin`、`CommandAnnotationPluginVendor`、`CommandAnnotationPluginVersion`、`CommandAnnotationPluginInvalid`、`CommandAnnotationPluginCommandPath`),轉而使用 `cli-plugins/manager/metadata` 中的等效項。 docker/cli#6298
  • Go-SDK:cli-plugins/manager:棄用元資料別名 (`NamePrefix`、`MetadataSubcommandName`、`HookSubcommandName`、`Metadata`、`ReexecEnvvar`),轉而使用 `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:棄用 `NewBuilderCommand` 和 `NewBakeStubCommand`。這些函式將在下一個版本中移除。 docker/cli#6312
  • Go-SDK:cli/command/builder:棄用 `NewPruneCommand`。 docker/cli#6343
  • Go-SDK:cli/command/checkpoint:棄用 `NewCheckpointCommand`。此函式將在下一個版本中移除。 docker/cli#6312
  • Go-SDK:cli/command/checkpoint:棄用 `NewFormat`、`FormatWrite`。 docker/cli#6341
  • Go-SDK:cli/command/completion:棄用 `NoComplete`。 docker/cli#6405
  • Go-SDK:cli/command/completion:移除已棄用的 `ValidArgsFn`。 docker/cli#6259
  • Go-SDK:cli/command/config:棄用 `NewConfigCommand`。此函式將在下一個版本中移除。 docker/cli#6312
  • Go-SDK:cli/command/config:棄用 `NewFormat`、`FormatWrite`、`InspectFormatWrite`。 docker/cli#6341
  • Go-SDK:cli/command/config:棄用 `RunConfigCreate`、`CreateOptions`、`RunConfigInspect`、`InspectOptions`、`RunConfigList`、`ListOptions`、`RunConfigRemove` 和 `RemoveOptions`。 docker/cli#6369
  • Go-SDK:cli/command/container:棄用 `NewBuildCommand`、`NewPullCommand`、`NewPushCommand`、`NewImagesCommand`、`NewImageCommand`、`NewHistoryCommand`、`NewImportCommand`、`NewLoadCommand`、`NewRemoveCommand`、`NewSaveCommand`、`NewTagCommand`、`NewPruneCommand`。這些函式將在下一個版本中移除。 docker/cli#6312
  • Go-SDK:cli/command/container:棄用 `NewDiffFormat`、`DiffFormatWrite`。這些函式僅供內部使用,將在下一個版本中移除。 docker/cli#6341
  • Go-SDK:cli/command/container:棄用 `NewRunCommand`、`NewExecCommand`、`NewPsCommand`、`NewContainerCommand`、`NewAttachCommand`、`NewCommitCommand`、`NewCopyCommand`、`NewCreateCommand`、`NewDiffCommand`、`NewExportCommand`、`NewKillCommand`、`NewLogsCommand`、`NewPauseCommand`、`NewPortCommand`、`NewRenameCommand`、`NewRestartCommand`、`NewRmCommand`、`NewStartCommand`、`NewStatsCommand`、`NewStopCommand`、`NewTopCommand`、`NewUnpauseCommand`、`NewUpdateCommand`、`NewWaitCommand`、`NewPruneCommand`。這些函式將在下一個版本中移除。 docker/cli#6312
  • Go-SDK:cli/command/context:棄用 `NewContextCommand`。此函式將在下一個版本中移除。 docker/cli#6312
  • Go-SDK:cli/command/context:棄用 `RunCreate` 和 `CreateOptions`。 docker/cli#6403
  • Go-SDK:cli/command/context:棄用 `RunExport` 和 `ExportOptions`。 docker/cli#6403
  • Go-SDK:cli/command/context:棄用 `RunImport`。 docker/cli#6403
  • Go-SDK:cli/command/context:棄用 `RunRemove` 和 `RemoveOptions`。 docker/cli#6403
  • Go-SDK:cli/command/context:棄用 `RunUpdate` 和 `UpdateOptions`。 docker/cli#6403
  • Go-SDK:cli/command/context:棄用 `RunUse`。 docker/cli#6403
  • Go-SDK:cli/command/image:棄用 `AuthResolver` 工具。 docker/cli#6357
  • Go-SDK:cli/command/image:棄用 `NewHistoryFormat`、`HistoryWrite`。 docker/cli#6341, docker/cli#6341
  • Go-SDK:cli/command/manifest:棄用 `NewManifestCommand`。此函式將在下一個版本中移除。 docker/cli#6312
  • Go-SDK:cli/command/network:棄用 `NewFormat`、`FormatWrite`。 docker/cli#6341
  • Go-SDK:cli/command/network:棄用 `NewNetworkCommand`。這些函式將在下一個版本中移除。 docker/cli#6312
  • Go-SDK:cli/command/node:棄用 `NewFormat`、`FormatWrite`、`InspectFormatWrite`。 docker/cli#6341
  • Go-SDK:cli/command/node:棄用 `NewNodeCommand`。此函式將在下一個版本中移除。 docker/cli#6312
  • Go-SDK:cli/command/plugin:棄用 `NewFormat`、`FormatWrite`。 docker/cli#6341
  • Go-SDK:cli/command/plugin:棄用 `NewPluginCommand`。此函式將在下一個版本中移除。 docker/cli#6312
  • Go-SDK:cli/command/registry:棄用 `NewLoginCommand`、`NewLogoutCommand`、`NewSearchCommand`。這些函式將在下一個版本中移除。 docker/cli#6312
  • Go-SDK:cli/command/registry:棄用 `NewSearchFormat`、`SearchWrite`。 docker/cli#6341
  • Go-SDK:cli/command/registry:棄用 `OauthLoginEscapeHatchEnvVar` 常量。 docker/cli#6413
  • Go-SDK:cli/command/secret:棄用 `NewFormat`、`FormatWrite`、`InspectFormatWrite`。 docker/cli#6341
  • Go-SDK:cli/command/secret:棄用 `NewSecretCommand`。此函式將在下一個版本中移除。 docker/cli#6312
  • Go-SDK:cli/command/service:棄用 `NewFormat`、`InspectFormatWrite`。 docker/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:棄用 `RunList`、`RunServices`。 docker/cli#6391
  • Go-SDK:cli/command/swarm:棄用 `NewSwarmCommand`。此函式將在下一個版本中移除。 docker/cli#6312
  • Go-SDK:cli/command/system:棄用 `NewVersionCommand`、`NewInfoCommand`、`NewSystemCommand`、`NewEventsCommand`、`NewInspectCommand`。這些函式將在下一個版本中移除。 docker/cli#6312
  • Go-SDK:cli/command/task:棄用 `NewTaskFormat`、`FormatWrite`。 docker/cli#6341
  • Go-SDK:cli/command/trust:棄用 `NewTrustCommand`。此函式將在下一個版本中移除。 docker/cli#6312
  • Go-SDK:cli/command/trust:棄用 `SignedTagInfo`、`SignerInfo`、`NewTrustTagFormat`、`NewSignerInfoFormat`、`TagWrite`、`SignerInfoWrite`。 docker/cli#6341
  • Go-SDK:cli/command/volume:棄用 `NewVolumeCommand`、`NewPruneCommand`。這些函式將在下一個版本中移除。 docker/cli#6312
  • Go-SDK:cli/command:移除僅供內部使用的 `AddTrustSigningFlags`、`AddTrustVerificationFlags` 和 `AddPlatformFlag` 工具。 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:棄用 `VisitAll`、`DisableFlagsInUseLine` 工具。這些工具僅供內部使用,將在下一個版本中移除。 docker/cli#6276
  • Go-SDK:cli:移除 `HasCompletionArg` 工具。此工具僅供內部使用。 docker/cli#6276
  • Go-SDK:棄用 `cli/command.RegistryAuthenticationPrivilegedFunc`。 docker/cli#6256
  • Go-SDK:棄用 cli/command/stack/formatter。 docker/cli#6391
  • Go-SDK:棄用 cli/command/stack/loader。 docker/cli#6391
  • Go-SDK:棄用 cli/command/stack/options。 docker/cli#6391
  • Go-SDK:棄用 cli/command/stack/swarm。 docker/cli#6391
  • Go-SDK:opts:棄用 `NewNamedListOptsRef`、`NewNamedMapOpts`、`NamedListOpts`、`NamedMapOpts` 和 `NamedOption`。這些型別和函式已不再使用,將在下一個版本中移除。 docker/cli#6292
  • Go-SDK:opts:棄用 `ParseEnvFile`,轉而使用 `kvfile.Parse`。 docker/cli#6381
  • Go-SDK:opts:棄用 `QuotedString`。此工具已不再使用,將在下一個版本中移除。 docker/cli#6275
  • Go-SDK:opts:棄用 `ValidateHost` 工具。此函式已不再使用,將在下一個版本中移除。 docker/cli#6280
  • Go-SDK:pkg/jsonmessage:棄用 `JSONMessage.From`、`JSONMessage.Time` 和 `JSONMessage.TimeNano` 欄位,因為 API 不再返回它們用於進度訊息。請改用 `events.Message` 型別來解析 `/events` 響應。 moby/moby#50762
  • Go-SDK:cli/registry/client 包已棄用,並將在下一個版本中移除。 docker/cli#6313

28.3.3

2025-07-29

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

安全性

此版本修復了一個問題:在 firewalld 重新載入後,已釋出的容器埠可以直接從本地網路訪問,即使它們旨在僅透過迴環地址訪問。 CVE-2025-54388 / GHSA-x4rx-4gw3-53p4 / moby/moby#50506

打包更新

28.3.2

2025-07-09

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

錯誤修復和增強

  • 修復了 `—use-api-socket` 在針對遠端守護程式時不正確工作的問題。 docker/cli#6157
  • 修復了啟用除錯日誌時,會列印多餘的“otel error”日誌的問題。 docker/cli#6160
  • 透過 SSH 連線到遠端守護程序時,對 SSH 引數進行引用,以避免意外擴充套件。 docker/cli#6147
  • 在 `docker login` 和 `docker 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 停止容器時,守護程式資料庫中(由 /containers/json API 使用)的容器狀態是最新的(在 API 響應之前)。 moby/moby#50136
  • 修復了 `docker image inspect inspect` 遺漏空欄位的問題。 moby/moby#50135
  • 修復了當 containerd 映象儲存被停用時,`docker images --tree` 未將映象標記為正在使用的問題。 docker/cli#6140
  • 修復了 `docker pull/push` 在需要認證時,因提示登入憑據而在非互動模式下掛起的問題。 docker/cli#6141
  • 修復了節點離開 Swarm 時可能存在的資源洩漏問題。 moby/moby#50115
  • 修復了 v28.3.3 中的一個迴歸問題,該問題導致在登入其他登錄檔時,`docker pull` 的登入提示會顯示 Docker Hub 特定的提示。 docker/cli#6135
  • 修復了在縮放具有放置偏好的服務後,Swarm 中所有新任務可能永遠停留在 PENDING 狀態的問題。 moby/moby#50211
  • 移除了 Docker 23.0 中意外引入的未文件化、隱藏的頂層 `docker remove` 命令。 docker/cli#6144
  • 驗證 registry-mirrors 配置作為 `dockerd --validate` 的一部分,並改進了無效映象的錯誤訊息。 moby/moby#50240
  • `dockerd-rootless-setuptool.sh`:修復了當 subuid/subgid 系統要求不滿足時,指令碼靜默返回且不顯示錯誤訊息的問題。 moby/moby#50059
  • containerd 映象儲存:修復了 `docker push` 未在遠端倉庫上建立標籤的問題。 moby/moby#50199
  • containerd 映象儲存:改進了 `docker pull/push` 在令牌伺服器返回錯誤時的處理。 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:棄用 `IdentityMapping` 和 `Identity.Chown`。 moby/moby#50210

28.2.2

2025-05-30

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

錯誤修復和增強

  • containerd 映象儲存:修復了導致 `docker build --push` 失敗的迴歸問題。這回滾了 修復,該修復解決了 `docker build` 未將覆蓋的映象作為懸空映象持久化的問題。 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` 選項時,增加對繫結掛載源上的相對父路徑 (`../`) 的支援。 docker/cli#4966
  • CDI 現在預設啟用。 moby/moby#49963
  • 在 `docker info` 中顯示發現的 CDI 裝置。 docker/cli#6078
  • `docker image rm`:新增 `--platform` 選項以從多平臺映象中移除一個變體。 docker/cli#6109
  • containerd 映象儲存:BuildKit 初步支援在 Windows 上構建 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-ca` 的 `cacert` 選項的問題。 docker/cli#5995
  • 修復了 CLI 在配置檔案 (`~/.docker/config.json`) 是相對符號連結時無法正確儲存的問題。 docker/cli#5282
  • 修復了具有 `—restart always` 策略的 CDI 裝置容器在守護程序重啟時啟動失敗的問題。 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。新的系統呼叫包括:`listmount`、`statmount`、`lsm_get_self_attr`、`lsm_list_modules`、`lsm_set_self_attr`、`mseal`、`uretprobe`、`riscv_hwprobe`、`getxattrat`、`listxattrat`、`removexattrat` 和 `setxattrat`。這可以防止容器在使用它們時收到 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
  • 新增守護程式選項 `“allow-direct-routing”` 以停用過濾直接傳送到容器的來自主機外部的資料包。 moby/moby#49832
  • 如果網路建立請求中的 `EnableIPv4` 或 `EnableIPv6` 覆蓋了網路選項 `com.docker.network.enable_ipv4` 或 `com.docker.network.enable_ipv6`,則在 inspect 輸出中不顯示它們。 moby/moby#49866
  • 修復了守護程式重啟後網路刪除可能失敗的問題,並顯示錯誤“has active endpoints”列出了空的端點名稱。 moby/moby#49901
  • 修復了 `docker network inspect --verbose` 有時可能導致守護程式崩潰的問題。 moby/moby#49937
  • 修復了在某些情況下,如果 Swarm 缺少入口網路,覆蓋網路的負載均衡器 IP 地址不會釋放的問題。 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` 更改為 `ContainerState`。 moby/moby#49991
  • `api/types/container`:為健康狀態常量定義 `HealthStatus` 型別。 moby/moby#49876
  • `api/types`:棄用已移至 `api/types/build` 的 `BuildResult`、`ImageBuildOptions`、`ImageBuildOutput`、`ImageBuildResponse`、`BuilderVersion`、`BuilderV1` 和 `BuilderBuildKi`。 moby/moby#50025

棄用

  • API:已棄用:`GET /images/{name}/json` 不再返回以下欄位:`Config`、`Hostname`、`Domainname`、`AttachStdin`、`AttachStdout`、`AttachStderr`、`Tty`、`OpenStdin`、`StdinOnce`、`Image`、`NetworkDisabled`(除非設定,否則已省略)、`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.CachePruneOptions`。 moby/moby#50015
  • Go-SDK:api/types:棄用 `BuildCachePruneReport`,轉而使用 `api/types/builder.CachePruneReport`。 moby/moby#50015
  • Go-SDK:api/types:棄用已移至 `api/types/swarm` 的 `NodeListOptions`、`NodeRemoveOptions`、`ServiceCreateOptions`、`ServiceUpdateOptions`、`RegistryAuthFromSpec`、`RegistryAuthFromPreviousSpec`、`ServiceListOptions`、`ServiceInspectOptions` 和 `SwarmUnlockKeyResponse`。 moby/moby#50027
  • Go-SDK:api/types:棄用已移至 api/types/swarm 的 `SecretCreateResponse`、`SecretListOptions`、`ConfigCreateResponse`、`ConfigListOptions`。 moby/moby#50024
  • Go-SDK:client:棄用 `IsErrNotFound`。 moby/moby#50012
  • Go-SDK:container:棄用 `IsValidHealthString`,轉而使用 `api/types/container.ValidateHealthStatus`。 moby/moby#49893
  • Go-SDK:container:棄用 `StateStatus`、`WaitCondition` 以及相關的 `WaitConditionNotRunning`、`WaitConditionNextExit` 和 `WaitConditionRemoved` 常量,轉而使用 `api/types/container` 中的等效項。 moby/moby#49874
  • Go-SDK:opts:棄用 `ListOpts.GetAll`,轉而使用 `ListOpts.GetSlice`。 docker/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` 響應中的 `BridgeNfIptables` 和 `BridgeNfIp6tables` 欄位在 API v1.48 中已棄用,現在在 API v1.50 中已省略。 moby/moby#49904
  • errdefs:棄用 `errdefs.FromStatusCode`。請改用 containerd 的 `errhttp.ToNative`。 moby/moby#50030

28.1.1

2025-04-18

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

錯誤修復和增強

  • 修復了 `dockerd-rootless-setuptool.sh` 錯誤報告缺少 `iptables` 的問題。 moby/moby#49833
  • containerd 映象儲存:修復了當使用包含零大小 tar 頭的歸檔檔案呼叫 `docker load` 時可能導致守護程序崩潰的問題。 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 run` 和 `docker create` 上添加了一個新的 `--use-api-socket` 標誌,以啟用從容器內部訪問 Docker socket 並與容器共享主機的憑證。 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
  • 修復了 `docker stats` 在 CPU 核心數高的機器上無法正常工作的問題。 moby/moby#49734
  • 修復了與私有倉庫互動時導致 `docker pull/push` 失敗的迴歸問題。 docker/cli#5964
  • 修復了在沒有 `ip_tables` 核心模組的主機上阻止無根 Docker 設定的問題。 moby/moby#49727
  • 修復了 firewalld 重新載入後,可能導致不需要的 iptables 規則被恢復且永不刪除的問題。 moby/moby#49728
  • 改進了 `docker service scale` 的 CLI 自動補全功能。 docker/cli#5968
  • `docker images --tree` 現在預設隱藏未標記和懸空的映象。 docker/cli#5924
  • `docker system info` 將在無法建立與 Docker 守護程序的連線時提供退出程式碼。 docker/cli#5918
  • containerd 映象儲存:修復了使用 BuildKit 構建時未發出 `image tag` 事件的問題。 moby/moby#49678
  • containerd 映象儲存:改進了 `docker push/pull` 對遠端登錄檔錯誤的處理。 moby/moby#49770
  • containerd 映象儲存:顯示非層映象 blob 的拉取進度。 moby/moby#49746

打包更新

網路

  • 修復了 Swarm 容器上的主機埠對映在 `docker ps` 和 `docker 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` 欄位,其中包含守護程式的防火牆配置資訊。 moby/moby#49761

Go SDK

  • 將最低 Go 版本要求更新為 go1.23。 docker/cli#5868
  • cli/command/context:從 JSON 輸出中移除臨時 `ContextType` 欄位。 docker/cli#5981
  • 客戶端:儘可能將映象引用保持為規範格式。 moby/moby#49609

棄用

  • API:已棄用:`GET /info` 響應中 `RegistryConfig` 結構中的 `AllowNondistributableArtifactsCIDRs` 和 `AllowNondistributableArtifactsHostnames` 欄位在 API v1.49 中已省略。 moby/moby#49749
  • API:已棄用:`GET /info` 端點中的 `ContainerdCommit.Expected`、`RuncCommit.Expected` 和 `InitCommit.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:棄用已遷移到 `github.com/moby/go-archive` 的 `pkg/archive`。 moby/moby#49743
  • Go-SDK:棄用已遷移到 `github.com/moby/sys/atomicwriter` 的 `pkg/atomicwriter`。 moby/moby#49748
  • Go-SDK:opts:移除已棄用的 `PortOpt`、`ConfigOpt`、`SecretOpt` 別名。 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 之前建立的容器時啟動失敗的問題。 moby/moby#49626
  • 修復了 `docker buildx prune` 在使用 `—min-free-space` 時可能出現的錯誤。 moby/moby#49623
  • 修復了在關閉容器時守護程式日誌中出現虛假 `io: read/write on closed pipe` 錯誤。 moby/moby#49590
  • 修復瞭如果 containerd socket 未立即可用,Docker 守護程序會過早失敗的問題。 moby/moby#49603
  • 預設情況下,在容器的 `/proc` 和 `/sys` 中遮蔽 Linux 熱中斷資訊。 moby/moby#49560
  • 更新 `contrib/check-config.sh` 以檢查更多與 iptables 相關的核心模組。 moby/moby#49622
  • containerd 映象儲存:修復了透過 `—user` 傳遞的使用者 ID 處理中的整數溢位問題。 moby/moby#49652
  • containerd 映象儲存:修復了守護程序日誌中記錄的虛假 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 不一致地報告雙棧埠對映的錯誤。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
  • 允許在停用 IPv6 的主機上啟動守護程序,而無需 --ip6tables=falsemoby/moby#49525
  • 修復了一個錯誤,該錯誤導致具有 --restart=always 且已釋出埠已被佔用的容器在緊密迴圈中重新啟動。moby/moby#49507
  • 修復了 Swarm 入口的問題,該問題由 iptables 規則的順序不正確引起。moby/moby#49538
  • 修復了從 --config-only 網路建立 swarm 範圍網路的錯誤。moby/moby#49521
  • 修復了 docker network inspect 在守護程序重新啟動之前,為新建立的沒有特定 IPAM 配置的網路報告帶有 CIDR 字尾的 IPv6 閘道器的錯誤。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 無法顯示所有平臺缺少層的多平臺映象的問題。moby/moby#49533
  • containerd 映象儲存:修復了 docker images --tree 報告錯誤內容大小的問題。moby/moby#49535
  • 修復了 i386 上的編譯問題 moby/moby#49526

打包更新

API

  • containerd 映象儲存:修復了 GET /images/json?manifests=1 未為僅索引映象填充 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
  • OOMScoreAdj 新增到 docker service createdocker stackdocker/cli#5145
  • docker buildx prune 現在支援 reserved-spacemax-used-spacemin-free-spacekeep-bytes 過濾器。moby/moby#48720
  • Windows:添加了對將 containerd 作為守護程序的子程序執行的支援,而不是使用系統安裝的 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 伺服器。
  • 橋接和 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
  • 添加了一個新的網路標籤 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 規則已進行 extensive 修改。這使得以下一些功能更改成為可能,並且是重構以在未來版本中啟用本機 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
      • 如果您以前在 iptables filter-FORWARD 策略設定為 ACCEPT 的情況下執行,並且需要恢復對未釋出埠的訪問,還要從 DOCKER 鏈中刪除每個橋接網路規則。例如,iptables -D DOCKER ! -i docker0 -o docker0 -j DROP
  • 修復了一個安全問題,該問題允許遠端主機直接連線到容器的已釋出埠。moby/moby#49325
  • 修復了一個安全問題,該問題允許鄰近主機連線到對映到環回地址的埠。moby/moby#49325
  • 修復了阻止埠釋出到鏈路本地地址的問題。moby/moby#48570
  • 容器釋出的 UDP 埠現在可以透過主機的公共 IP 地址可靠地被其他網路上的容器訪問。moby/moby#48571
  • Docker 現在僅在自身(sysctl net.ipv6.conf.all.forwardingnet.ipv6.conf.default.forwarding)啟用 IP 轉發時才將 ip6tables 過濾器表中的 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 或使用者態代理。
    • 未釋出的容器埠仍然可以透過容器的 IP 地址從 Docker 主機直接訪問。
  • 使用 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 模式,但沒有設定每個埠/協議規則。這意味著容器上的任何埠都可以透過從遠端主機直接路由進行訪問。
  • 橋接驅動程式選項 com.docker.network.bridge.gateway_mode_ipv4com.docker.network.bridge.gateway_mode_ipv6 現在接受模式 isolated,當網路也是 internal 時。moby/moby#49262
    • 通常,在 internal 網路中,會為橋接裝置分配一個地址。因此,Docker 主機上的程序可以訪問該網路,網路中的容器可以訪問在該橋接地址上監聽的主機服務(包括監聽“任何”主機地址 0.0.0.0:: 的服務)。
    • 使用閘道器模式 isolated 建立的 internal 橋接網路在 Docker 主機上沒有地址。
  • 當埠對映包含由於使用 --gateway_mode_ipv[46] 停用主機 NAT 而無法使用的主機 IP 地址或埠號時,容器建立將不再失敗。如果網路連線或斷開時閘道器端點發生變化,可能需要未使用的欄位。將記錄有關未使用的欄位的訊息。moby/moby#48575
  • 當用戶態代理啟用時,不要為容器自己的已釋出埠建立 iptables nat-POSTROUTING 偽裝規則。moby/moby#48854

IPv6

  • 新增 docker network create 選項 --ipv4。要停用網路的 IPv4 地址分配,請使用 docker network create --ipv4=false [...]docker/cli#5599
  • 守護程序選項 --ipv6daemon.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 閘道器,一個用於 IPv6。
    • daemon.json 檔案中,要提供兩個地址,請使用 "host-gateway-ips"。例如,"host-gateway-ips": ["192.0.2.1", "2001:db8::1111"]

錯誤修復和增強

  • 預設新增 IPv6 環回地址作為不安全登錄檔。moby/moby#48540
  • 添加了對 dockerd 的 Cobra 生成的完成指令碼的支援。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 匹配的容器在守護程序啟動時無法恢復。moby/moby#48669
  • 修復了 docker ps 顯示的一些 IPv6 地址未正確用方括號括起來的問題。docker/cli#5468
  • 修復了 docker run 期間無法取消映象拉取的問題。docker/cli#5645
  • 修復了以 Windows 服務執行時守護程序的錯誤處理,以防止不乾淨的退出。moby/moby#48518
  • 修復了使用 --attach stdout--attach stderrstdin 相比,docker run 的輸出不一致的問題。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 pullExtracting 層狀態的支援。moby/moby#49064
  • containerd 映象儲存:修復了 commitimportbuild 未將替換的映象保留為懸空映象的問題。moby/moby#48316
  • containerd 映象儲存:使 docker load --platform 在請求的平臺未載入時返回錯誤。moby/moby#48718
  • 修復了 --link 選項的驗證。docker/cli#5739
  • 添加了網路診斷埠守護程序配置選項的驗證。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
  • 刪除了在 26.1.0 版本中引入的用於控制從 Windows 容器轉發到外部 DNS 解析器的功能標誌 windows-dns-proxy,以使 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 現在使用可變功能選項。moby/moby#49466
  • pkg/containerfs:移至內部。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 欄位,其中包含映象索引中包含的子清單資訊。這包括平臺特定清單和構建證明。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
  • 改進了容器調整大小和執行調整大小上無效寬度/高度的錯誤。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/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
    • 使用者定義的橋接網路需要啟用 IPv4 或 IPv6 地址分配。對於預設橋接網路 (docker0) 無法停用 IPv4。moby/moby#48323
    • macvlanipvlan 網路可以建立時停用 IPv4、IPv6 或兩種地址族的地址分配。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 connectgw-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 現在返回一個 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:移除已棄用的 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 守護程序的 --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
  • 移除對已棄用的外部圖形驅動程式外掛的支援。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 模組現在按需載入,不再在守護程序啟動期間載入,這使得這些欄位過時。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 的輔助函式,應改用 config.Validatemoby/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:棄用 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 的別名,應改用 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/container - NetworkSettingsNetworkSettingsBaseDefaultNetworkSettingsSummaryNetworkSettingsHealthHealthcheckResultNoHealthcheckStartingHealthyUnhealthy 常量、MountPointPortContainerStateContainerContainerJSONBaseContainerJSONContainerNode。舊型別已棄用,將在下個版本中移除。moby/moby#48108
  • api/types 移動到 api/types/image - ImageInspectRootFS。舊型別已棄用,將在下個版本中移除。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