Docker Engine 27 版發行說明
本頁介紹 Docker Engine 27 版的最新更改、新增功能、已知問題和修復。
有關更多資訊,請參閱:
- 已棄用和已移除的功能,請參閱已棄用的引擎功能。
- 對引擎 API 的更改,請參閱引擎 API 版本歷史。
27.5
Docker Engine 27.5 版本發行說明。
27.5.1
2025-01-22有關此版本中拉取請求和更改的完整列表,請參閱相關的 GitHub 里程碑:
錯誤修復和增強
- 修復了在初始化預設橋接失敗後可能持續阻止守護程序啟動的問題。moby/moby#49307
- 添加了一個 `DOCKER_IGNORE_BR_NETFILTER_ERROR` 環境變數。將其設定為 `1` 允許在無法載入 `br_netfilter` 的主機上執行。某些功能將無法正常工作,包括停用橋接網路中的容器間通訊。在停用使用者空間代理的情況下,將無法從同一網路上的一個容器訪問另一個容器的已釋出埠。moby/moby#49306
打包更新
- 將 Go 執行時更新到 1.22.11(修復 CVE-2024-45341、CVE-2024-45336)。moby/moby#49312、docker/docker-ce-packaging#1147、docker/cli#5762
- 將 RootlessKit 更新到 v2.3.2 以支援 `passt` >= 2024_10_30.ee7d0b6。moby/moby#49304
- 將 Buildx 更新到 v0.20.0。docker/docker-ce-packaging#1149
27.5.0
2025-01-13有關此版本中拉取請求和更改的完整列表,請參閱相關的 GitHub 里程碑:
錯誤修復和增強
- containerd 映象儲存:修復透過 tarball 將構建上下文傳遞到 `/build` 端點的問題。moby/moby#49194
- 沒有 `keepStorage` 值的構建器垃圾收集策略現在會按預期繼承 `defaultKeepStorage` 限制。moby/moby#49137
- 在守護程序啟動期間保留網路標籤。moby/moby#49200
- 修復刪除容器時可能出現的競態條件錯誤。moby/moby#49239
Go SDK
- `pkg/sysinfo`:棄用 `NumCPU`。此實用程式與 `runtime.NumCPU` 行為相同。moby/moby#49247
- `pkg/fileutils`:棄用 `GetTotalUsedFds`:此函式僅在內部使用,將在下一個版本中移除。moby/moby#49209
- `pkg/ioutils`:棄用 `BytesPipe`、`NewBytesPipe`、`ErrClosed`、`WriteCounter`、`NewWriteCounter`、`NewReaderErrWrapper`、`NopFlusher`、`NopWriter`、`NopWriteCloser`。它們只在內部使用,將在下一個版本中移除。moby/moby#49246、moby/moby#49255
- `pkg/reexec`:此包已棄用並移至單獨的模組。請改用 `github.com/moby/sys/reexec`。moby/moby#49135
打包更新
- 將 containerd 更新到 v1.7.25 moby/moby#49253
- 將 `runc` 更新到 v1.2.4 moby/moby#49243
- 將 BuildKit 更新到 v0.18.2 moby/moby#48949
- 將 Compose 更新到 v2.32.2 docker/docker-ce-packaging#1140
27.4
Docker Engine 27.4 版本發行說明。
27.4.1
2024-12-18有關此版本中拉取請求和更改的完整列表,請參閱相關的 GitHub 里程碑:
錯誤修復和增強
- 修復 OTel 未配置時記憶體分配過多的問題。moby/moby#49079
- 當守護程序啟動時停用 `bridge-nf-call-iptables` 或 `bridge-nf-call-ip6tables` 時,`docker info` 命令和相應的 `GET /info` API 端點不再包含警告。`br_netfilter` 核心模組現在在需要時會嘗試載入,這使得這些警告不準確。moby/moby#49090
- 嘗試載入核心模組,包括 `ip6_tables` 和 `br_netfilter`,當需要時,使用一種在 Docker-in-Docker 容器內可能成功的方法。moby/moby#49043
- 修復了一個可能導致 iptables `DOCKER FILTER` 鏈在失敗時未清理的錯誤。moby/moby#49110
打包更新
- 將 Compose 更新到 v2.32.1。docker/docker-ce-packaging#1130
- 將 Buildx 更新到 v0.19.3。docker/docker-ce-packaging#1132
- 將 runc(僅靜態二進位制檔案)更新到 v1.2.3 moby/moby#49085
27.4.0
2024-12-09有關此版本中拉取請求和更改的完整列表,請參閱相關的 GitHub 里程碑:
API
- 啟用了 `manifests` 選項的 `GET /images/json` 現在會保留 manifest-index 中 manifest 出現的原始順序。moby/moby#48712
錯誤修復和增強
- 當使用 `jsonfile` 或 `local` 日誌驅動程式讀取日誌時,嘗試讀取或解析底層日誌檔案時出現的任何錯誤將導致跳過檔案的其餘部分並移動到下一個日誌檔案(如果存在),而不是向客戶端返回錯誤並關閉流。這些錯誤可以在 Docker Daemon 日誌中檢視,並在配置跟蹤時匯出到跟蹤。moby/moby#48842
- 讀取日誌檔案時,現在只有在需要時才解壓縮壓縮的日誌檔案,而不是在開始日誌流之前解壓縮所有檔案。moby/moby#48842
- 修復了一個問題:當在停用 `userland-proxy` 的橋接網路上執行時,如果核心的 `br_netfilter` 模組未載入且未啟用,則同一網路上的一個容器的已釋出埠無法從另一個容器訪問。現在,當建立停用使用者空間代理的網路時,守護程序將嘗試載入該模組並啟用 `bridge-nf-call-iptables` 或 `bridge-nf-call-ip6tables`。moby/moby#48685
- 修復 `bridge` 和 `br_netfilter` 核心模組的載入問題。moby/moby#48966
- containerd 映象儲存:修復 Docker 守護程序在使用 containerd 快照器和許多構建/映象時,因“上下文截止日期超出錯誤”而無法完全啟動的問題。moby/moby#48954
- containerd 映象儲存:修復部分拉取的映象未被垃圾回收的問題。moby#48910、moby/moby#48957
- containerd 映象儲存:修復 `docker image inspect` 在 `RepoDigests` 中輸出重複引用。moby/moby#48785
- containerd 映象儲存:修復在某些情況下,當 HTTPS 請求因非 TLS 相關錯誤而失敗時,無法連線到某些不安全登錄檔的問題。moby/moby#48758
- containerd 映象儲存:移除標記非懸空映象時令人困惑的警告日誌。moby/moby#49010
- containerd 映象儲存:在 `docker image ls --tree` 中不要給名稱加下劃線。docker/cli#5519
- containerd 映象儲存:將 `docker image ls --tree` 中的 `USED` 列名稱更改為 `IN USE`。docker/cli#5518
- `dockerd-rootless-setuptool.sh install --force` 現在會忽略 RootlessKit 錯誤 moby/moby#48695
- 停用屬於橋接網路的橋接器所分配地址的 IPv6 重複地址檢測 (DAD)。moby/moby#48684
- 移除 BuildKit 初始化超時。moby/moby#48963
- 在 ZFS 上刪除資料集時,忽略“資料集不存在”錯誤。moby/moby#48968
- 客戶端:防止空閒連線洩漏檔案描述符。moby/moby#48764
- 修復透過 `--mount` 選項建立的匿名卷未標記為匿名的問題。moby/moby#48755
- 在守護程序使用 live-restore 重啟後,確保 iptables 跳轉到 `DOCKER-USER` 鏈的操作放置在其他規則之前。moby/moby#48714
- 修復 OTel 儀表可能導致的記憶體洩漏。moby/moby#48693
- 為每個映象儲存建立獨立的構建歷史資料庫。moby/moby#48688
- 修復了當 DNS 解析在緊密迴圈中進行時導致記憶體使用過多的問題。moby/moby#48840
- 修復了 `docker run` 期間無法取消映象拉取操作的錯誤。docker/cli#5654
- 如果憑據未更改,`docker login` 和 `docker logout` 命令不再更新配置檔案。docker/cli#5569
- 最佳化 `docker stats` 以減少閃爍問題。docker/cli#5588、docker/cli#5635
- 修復了無法訪問的外掛路徑阻止外掛被檢測到的問題。docker/cli#5652
- 在 cobra 生成的 shell 補全中添加了 `events --filter` 的支援。docker/cli#5614
- 修復 `events --filter daemon=` 的 bash 自動補全。docker/cli#5563
- 改進 `docker rm` 的容器 shell 補全。docker/cli#5540
- 新增 `--platform` 標誌的 shell 補全。docker/cli#5540
- rootless:使 `/etc/cdi` 和 `/var/run/cdi` 可透過容器裝置介面 (CDI) 整合訪問。moby/moby#49027
已移除
- 棄用 `Daemon.Exists()` 和 `Daemon.IsPaused()`。這些函式不再使用,將在下一個版本中移除。moby/moby#48719
- 棄用 `container.ErrNameReserved` 和 `container.ErrNameNotReserved`。moby/moby#48697
- 棄用 `pkg/platform` - 此包僅在內部使用,將在下一個版本中移除。moby/moby#48863
- 棄用 `RepositoryInfo.Class`。此欄位不再使用,將在下一個版本中移除。moby/moby#49013
- Go SDK:修復 `cli/command.ConfigureAuth()` 的棄用問題,該函式自 v27.2.1 起已棄用。docker/cli#5552
- Go SDK:棄用 `cli.Errors` 型別,轉而使用 Go 的 `errors.Join` docker/cli#5548
打包更新
- 將 Go 執行時更新到 1.22.10。moby/moby#49026、docker/cli#5669、docker/docker-ce-packaging#1120。
- 將 Compose 更新到 v2.31.0。docker/docker-ce-packaging#1100
- 將 BuildKit 更新到 v0.17.3。moby/moby#49024
- 將 Buildx 更新到 v0.19.1。docker/docker-ce-packaging#1115
- 將 containerd 更新到 v1.7.24。moby/moby#48934
- 將 containerd(僅靜態二進位制檔案)更新到 v1.7.24。moby/moby#48919
- 將 runc 更新到 v1.2.2。moby/moby#48919
27.3
Docker Engine 27.3 版本發行說明。
27.3.1
2024-09-20有關此版本中拉取請求和更改的完整列表,請參閱相關的 GitHub 里程碑:
錯誤修復和增強
- CLI:修復命令執行指標未正確匯出的問題。docker/cli#5457
打包更新
- 將 Compose 更新到 v2.29.7
27.3.0
2024-09-19有關此版本中拉取請求和更改的完整列表,請參閱相關的 GitHub 里程碑:
錯誤修復和增強
- containerd 映象儲存:修復 `docker image prune -a` 導致被摘要引用映象啟動的容器所使用的映象被解標記的問題。moby/moby#48488
- 向守護程序選項添加了 `--feature` 標誌。moby/moby#48487
- 更新了 `--gpus=0` 標誌的處理方式,使其與 NVIDIA 容器執行時保持一致。moby/moby#48483
- 支援 WSL2 映象模式網路使用介面 `loopback0` 處理來自 Windows 主機的報文。moby/moby#48514
- 修復了一個問題:當在執行 `--iptables=false`、`--ip6tables=true`(預設)、以及在未正常載入 `br_netfilter` 核心模組的主機上,防火牆對轉發的資料包設定了 DROP 規則時,IPv4 橋接網路上的容器之間無法通訊。moby/moby#48511
- CLI:修復 `docker volume update` 命令在未傳遞任何引數/卷時導致 CLI 崩潰的問題。docker/cli#5426
- CLI:在 Windows 上的 WSL 環境中執行時,正確報告指標。docker/cli#5432
打包更新
- 將 containerd(僅靜態二進位制檔案)更新到 v1.7.22 moby/moby#48468
- 已將 Buildkit 更新到 v0.16.0
- 將 Compose 更新到 v2.29.6
- 將 Buildx 更新到 v0.17.1
27.2
Docker Engine 27.2 版本發行說明。
27.2.1
2024-09-09錯誤修復和增強
- containerd 映象儲存:修復非容器映象在 `docker image ls` 輸出中被隱藏的問題。moby/moby#48402
- containerd 映象儲存:改進 `docker pull` 在映象平臺不匹配時的錯誤訊息。moby/moby#48415
- CLI:修復 `docker login` 未從傳入的登錄檔地址中移除倉庫名稱的問題,導致憑據儲存在錯誤的鍵下。docker/cli#5385
- CLI:修復了在等待使用者認證時,如果 CLI 程序被掛起然後恢復,有時會導致瀏覽器登入流程失敗的問題。docker/cli#5376
- CLI:如果非互動式呼叫 `docker login` 時帶有 `--password` 或 `--password-stdin` 但沒有 `--user`,現在會返回錯誤而不是掛起。docker/cli#5402
打包更新
- 將 runc 更新到 v1.1.14,其中包含對 CVE-2024-45310 的修復。moby/moby#48426
- 將 Go 執行時更新到 1.22.7。moby/moby#48433、docker/cli#5411、docker/docker-ce-packaging#1068
27.2.0
2024-08-27有關此版本中拉取請求和更改的完整列表,請參閱相關的 GitHub 里程碑:
- docker/cli,27.2.0 里程碑
- moby/moby,27.2.0 里程碑
- 已棄用和刪除的功能,請參閱 棄用功能。
- Engine API 的更改,請參閱 API 版本歷史。
新增
此版本中的新功能包括
裝置程式碼登入
此版本添加了對使用裝置程式碼登入 Docker Hub 的支援。
您仍然可以使用舊的使用者名稱和密碼或訪問令牌登入方式,但裝置程式碼登入更安全,並且不需要您在 CLI 中輸入密碼。


要使用舊方法,請使用 `docker login -u
`docker image ls` 的多平臺支援
實驗性功能
這是一個實驗性功能,隨時可能更改,不提供任何向後相容性。在啟用 containerd 映象儲存的情況下,`docker image ls` 命令(或 `docker images` 簡寫)現在支援一個 `--tree` 標誌,該標誌現在顯示映象是否是多平臺映象。
API
`GET /images/json` 響應現在包含 `Manifests` 欄位,其中包含有關映象索引中包含的子清單的資訊。這包括平臺特定清單和構建證明等內容。
只有當請求也將 `manifests` 查詢引數設定為 `true` 時,才會填充新欄位。
實驗性功能
這是一個實驗性功能,隨時可能更改,不提供任何向後相容性。
錯誤修復和增強
- CLI:修復了透過 SSH 進行遠端上下文時,CLI 在連線到遠端主機時會分配偽 TTY 的問題,這在極少數情況下會導致問題。docker/cli#5351
- 修復了網路建立時 `--ip-range` 以 64 位邊界結束時出現的問題。moby/moby#48326
- CLI:`docker ps` 在埠繫結中顯示的 IPv6 地址現在用方括號括起來。docker/cli#5365
- containerd 映象儲存:修復在解壓映象失敗的情況下,`docker load` 過早退出錯誤的問題。moby/moby#48376
- containerd 映象儲存:修復 `docker pull` 後,之前的映象未作為懸空映象保留的問題。moby/moby#48380
打包更新
- 將 BuildKit 更新到 v0.15.2。moby/moby#48341
- 將 Compose 更新到 v2.29.2。docker/docker-ce-packaging#1050
- 將 containerd 更新到 v1.7.21。moby/moby#48383、docker/containerd-packaging#389
已知問題
- 在 Docker CLI 中針對登錄檔進行認證時(`docker login [登錄檔地址]`),存在一個已知問題:如果提供的登錄檔地址包含倉庫/映象名稱(例如 `docker login index.docker.io/docker/welcome-to-docker`),則倉庫部分(`docker/welcome-to-docker`)未規範化,導致憑據儲存不正確,從而導致後續從登錄檔拉取映象(`docker pull index.docker.io/docker/welcome-to-docker`)時未進行認證。為防止此問題,在執行 `docker login` 時,請勿在登錄檔地址中包含任何多餘的字尾。注意
使用包含 URL 路徑段的地址進行 `docker login` 不是文件中記載的使用案例,被認為是不受支援的。建議的使用方式是僅指定登錄檔主機名,並可選地指定埠,作為 `docker login` 的地址。
27.1
Docker Engine 27.1 版本發行說明。
27.1.2
2024-08-13有關此版本中拉取請求和更改的完整列表,請參閱相關的 GitHub 里程碑:
- docker/cli,27.1.2 里程碑
- moby/moby,27.1.2 里程碑
- 已棄用和刪除的功能,請參閱 棄用功能。
- Engine API 的更改,請參閱 API 版本歷史。
錯誤修復和增強
- 修復了在從大型 Dockerfile 構建時可能導致 `ResourceExhausted desc = grpc: received message larger than max` 錯誤的迴歸問題。moby/moby#48245
- CLI:修復 `docker attach` 列印虛假 `context cancelled` 錯誤訊息的問題。docker/cli#5296
- CLI:修復 `docker attach` 在 `SIGINT` 上退出,而不是將訊號轉發到容器並等待其退出。docker/cli#5302
- CLI:修復 `--device-read-bps` 和 `--device-write-bps` 選項不生效的問題。docker/cli#5339
- CLI:修復在執行外掛時某些情況下發生的崩潰。docker/cli#5337
打包更新
- 將 BuildKit 更新到 v0.15.1。moby/moby#48246
- 將 Buildx 更新到 v0.16.2。docker/docker-ce-packaging#1043
- 將 Go 執行時更新到 1.21.13。moby/moby#48301、docker/cli#5325、docker/docker-ce-packaging#1046
- 從 Windows 軟體包中移除未使用的 `docker-proxy.exe` 二進位制檔案。docker/docker-ce-packaging#1045
27.1.1
2024-07-23安全性
此版本包含對 CVE-2024-41110 / GHSA-v23v-6jw2-98fq 的修復,該漏洞影響使用 授權外掛 (AuthZ) 進行訪問控制的設定。此版本中不包含其他更改,對於不使用 AuthZ 外掛的使用者,此版本與之前的版本完全相同。
打包更新
- 將 Compose 更新到 v2.29.1。moby/docker-ce-packaging#1041
27.1.0
2024-07-22有關此版本中拉取請求和更改的完整列表,請參閱相關的 GitHub 里程碑:
- docker/cli,27.1.0 里程碑
- moby/moby,27.1.0 里程碑
- 已棄用和刪除的功能,請參閱 棄用功能。
- Engine API 的更改,請參閱 API 版本歷史。
錯誤修復和增強
- rootless: 新增 `Requires=dbus.socket` 以防止在 cgroup v2 主機上使用 systemd 啟動守護程序時出現錯誤。moby/moby#48141
- containerd 整合:使用 BuildKit 構建映象時,現在會正確發出 `image tag` 事件。moby/moby#48182
- CLI:為 `docker image rm`、`docker image history` 和 `docker image inspect` 啟用 shell 補全。moby/moby#5261
- CLI:新增並改進了各種標誌的 shell 補全。moby/moby#5261
- CLI:向 `docker service create` 和 `docker stack` 新增 OOMScoreAdj。docker/cli#5274
- CLI:新增對 `DOCKER_CUSTOM_HEADERS` 環境變數的支援(實驗性)。docker/cli#5271
- CLI:containerd 整合:修復 `docker push` 在不受支援的 API 版本上將 `--platform` 標誌預設設定為 `DOCKER_DEFAULT_PLATFORM` 環境變數值的問題。docker/cli#5248
- CLI:修復:`login` 提示上的上下文取消。docker/cli#5260
- CLI:修復:在連線到容器時向 CLI 傳送終止請求時,等待容器退出後再關閉流。docker/cli#5250
已棄用
- `pkg/rootless/specconv` 包已棄用,將在下一個版本中移除。moby/moby#48185
- `pkg/containerfs` 包已棄用,將在下一個版本中移除。moby/moby#48185
- `pkg/directory` 包已棄用,將在下一個版本中移除。moby/moby#48185
- `api/types/system`:移除已棄用的 `Info.ExecutionDriver`。moby/moby#48184
打包更新
- 將 Buildx 更新到 v0.16.1。moby/docker-ce-packaging#1039
- 將 Compose 更新到 v2.29.0。moby/docker-ce-packaging#1038
- 將 Containerd(僅靜態二進位制檔案)更新到 v1.7.20。moby/moby#48191
- 將 BuildKit 更新到 v0.15.0。moby/moby#48175
- 將 Go 執行時更新到 1.21.12,其中包含針對 CVE-2024-24791 的安全修復。moby/moby#48120
27.0
Docker Engine 27.0 的發行說明。
27.0.3
2024-07-01有關此版本中拉取請求和更改的完整列表,請參閱相關的 GitHub 里程碑:
- docker/cli,27.0.3 里程碑
- moby/moby,27.0.3 里程碑
- 已棄用和刪除的功能,請參閱 棄用功能。
- Engine API 的更改,請參閱 API 版本歷史。
錯誤修復和增強
- 修復了一個迴歸問題,該問題錯誤地將從主機 IPv6 地址到僅 IPv4 容器的埠對映報告為錯誤。moby/moby#48090
- 修復了建立網路時導致重複子網分配的迴歸問題。moby/moby#48089
- 修復了在使用 rootless 模式並在支援帶有使用者名稱空間的本機 overlay 的系統上嘗試拉取映象時導致 `fail to register layer: failed to Lchown` 錯誤的迴歸問題。moby/moby#48086
27.0.2
2024-06-27有關此版本中拉取請求和更改的完整列表,請參閱相關的 GitHub 里程碑:
- docker/cli,27.0.2 里程碑
- moby/moby,27.0.2 里程碑
- 已棄用和刪除的功能,請參閱 棄用功能。
- Engine API 的更改,請參閱 API 版本歷史。
錯誤修復和增強
- 修復了分析 Docker 登錄檔 URL 時埠號被忽略的迴歸問題。docker/cli#5197、docker/cli#5198
已移除
- api/types: 棄用 `ContainerJSONBase.Node` 欄位和 `ContainerNode` 型別。這些定義被獨立的(“經典”)Swarm API 使用,但從未在 Docker Engine 本身中實現。moby/moby#48055
27.0.1
2024-06-24有關此版本中拉取請求和更改的完整列表,請參閱相關的 GitHub 里程碑:
- docker/cli,27.0.0 里程碑
- moby/moby,27.0.0 里程碑
- 已棄用和刪除的功能,請參閱 棄用功能。
- Engine API 的更改,請參閱 API 版本歷史。
新增
- containerd 映象儲存:向 `docker image push` 添加了 `--platform` 標誌,並改進了在多平臺映象並非所有平臺都在本地可用時的預設行為。docker/cli#4984、moby/moby#47679
- 為 `docker stack deploy` 添加了對服務網路中 `driver_opts` 的支援。docker/cli#5125
- 在查詢帶 `docker-` 字首的使用者空間代理二進位制檔案時,考慮額外的 `/usr/local/libexec` 和 `/usr/libexec` 路徑。moby/moby#47804
錯誤修復和增強
- `*client.Client` 例項現在始終可以安全地被多個 goroutine 併發使用。以前,在使用 `WithAPIVersionNegotiation()` 選項時,這可能導致資料競爭。moby/moby#47961
- 修復了 Docker CLI 在某些情況下會洩漏 `$TMPDIR` 中的 Unix socket 的錯誤。docker/cli#5146
- 當與 `--privileged` 結合使用時,不要忽略自定義 seccomp 配置檔案。moby/moby#47500
- rootless: overlay2: 在 Linux 核心版本 5.11 及更高版本中使用 rootless 模式時,支援本機 overlay diff。moby/moby#47605
- 修復了健康檢查的 `StartInterval` 預設值,以反映文件中的值 5 秒。moby/moby#47799
- 修復了當使用者取消操作(例如使用 Ctrl+C)時,`docker save` 和 `docker load` 未在守護程序端結束的問題。moby/moby#47629
- 容器的 `StartedAt` 屬性現在在容器啟動前記錄,保證 `StartedAt` 始終在 `FinishedAt` 之前。moby/moby#47003
- Windows 容器在 Windows 上使用的內部 DNS 解析器現在預設將請求轉發到外部 DNS 伺服器。這使得 `nslookup` 能夠解析外部主機名。此行為可以透過 `daemon.json` 停用,使用 `"features": { "windows-dns-proxy": false }`。該配置選項將在未來的版本中移除。moby/moby#47826
- 當 CLI 沒有許可權讀取配置檔案時,列印警告。docker/cli#5077
- 修復容器附加時的 goroutine 和檔案描述符洩漏。moby/moby#45052
- 在守護程序啟動期間,清除所有已停止或已死亡容器的網路狀態。moby/moby#47984
- 原子地寫入卷選項 JSON,以避免系統崩潰後出現“無效 JSON”錯誤。moby/moby#48034
- 允許具有相同父級的多個 macvlan 網路。moby/moby#47318
- 允許 BuildKit 在宣傳它的 Windows 守護程序上使用。docker/cli#5178
網路
- 允許在容器建立和網路連線期間為每個介面設定 sysctls。moby/moby#47686
- 在未來的版本中,這將是唯一設定每個介面 sysctl 選項的方法。例如,在 `docker run` 命令的命令列中,`--network mynet --sysctl net.ipv4.conf.eth0.log_martians=1` 將被拒絕。相反,您必須使用 `--network name=mynet,driver-opt=com.docker.network.endpoint.sysctls=net.ipv4.conf.IFNAME.log_martians=1`。
IPv6
- `ip6tables` 不再是實驗性功能。您可以移除 `experimental` 配置選項並繼續使用 IPv6,如果其他功能不需要它。
- `ip6tables` 現在預設在 Linux 橋接網路上啟用。moby/moby#47747
- 這使得 IPv4 和 IPv6 行為相互一致,並降低了啟用 IPv6 的容器意外暴露於網路的風險。
- 如果您執行 Docker Engine 時啟用了 `ip6tables`(新預設值),則沒有影響。
- 如果您在沒有 `ip6tables` 的情況下使用啟用了 IPv6 的橋接網路,這可能是一個破壞性更改。只有已釋出的容器埠(`-p` 或 `--publish`)可以從 Docker 橋接網路外部訪問,並且出站連線偽裝成主機。
- 要恢復早期版本的行為,即完全不使用 `ip6tables`,請在 `daemon.json` 中設定 `"ip6tables": false`,或使用 CLI 選項 `--ip6tables=false`。或者,保留 `ip6tables` 啟用狀態,釋出埠,並啟用直接路由。
- 在啟用 `ip6tables` 的情況下,如果 `ip6tables` 在您的主機上無法正常工作,Docker Engine 將啟動,但無法建立啟用 IPv6 的網路。
IPv6 網路配置改進
- 如果 `default-address-pools` 引數未手動配置,或者不包含任何 IPv6 字首,則會自動向其新增一個唯一的本地地址 (ULA) 基本字首。moby/moby#47853
- 在此版本之前,要建立啟用 IPv6 的網路,需要使用 `--subnet` 選項指定一個 IPv6 子網,或者在 `daemon.json` 中向 `default-address-pools` 新增 IPv6 範圍。
- 從本版本開始,當使用 `--ipv6` 建立橋接網路且這些選項未定義 IPv6 子網時,將使用 IPv6 唯一本地地址 (ULA) 基本字首。
- ULA 字首源自 Engine 主機 ID,因此它在不同主機和不同時間都是唯一的。
- 現在可以將任何大小的 IPv6 地址池新增到 `default-address-pools`。moby/moby#47768
- 現在可以透過在 `daemon.json` 中使用 `"default-network-opts": { "bridge": {"com.docker.network.enable_ipv6": "true"}}`,或者在命令列上使用 `dockerd --default-network-opt=bridge=com.docker.network.enable_ipv6=true`,預設在所有自定義橋接網路上啟用 IPv6。moby/moby#47867
- 啟用了 `ip6tables` 的 IPv6 網路的直接路由。moby/moby#47871
- 新增了橋接驅動程式選項 `com.docker.network.bridge.gateway_mode_ipv6=
`。 - 預設行為 `nat` 與之前啟用了 `ip6tables` 的版本保持不變。為每個已釋出的容器埠設定了 NAT 和偽裝規則。
- 當設定為 `routed` 時,不為已釋出的埠配置 NAT 或偽裝規則。這使得可以直接 IPv6 訪問容器,如果主機的網路可以將容器地址的資料包路由到主機。已釋出的埠將在容器的防火牆中開啟。
- 當埠對映僅適用於 `routed` 模式時,只允許地址 `0.0.0.0` 或 `::`,並且不得給出主機埠。
- 請注意,在 `nat` 或 `routed` 模式下,如果網路中設定了路由,則已釋出的容器埠可以從任何遠端地址訪問,除非 Docker 主機的防火牆有額外的限制。例如:`docker network create --ipv6 -o com.docker.network.bridge.gateway_mode_ipv6=routed mynet`。
- 選項 `com.docker.network.bridge.gateway_mode_ipv4=
` 也可用,行為與 IPv4 相同。
- 新增了橋接驅動程式選項 `com.docker.network.bridge.gateway_mode_ipv6=
- 如果主機上正在執行 firewalld,Docker 將建立策略 `docker-forwarding` 以允許從任何區域轉發到 `docker` 區域。這使得配置具有可路由 IPv6 地址且無 NAT 或偽裝的橋接網路成為可能。moby/moby#47745
- 當釋出埠時未指定主機埠,或給出了主機埠範圍時,將為 IPv4 和 IPv6 分配相同的埠。moby/moby#47871
- 例如,`-p 80` 將導致為 `0.0.0.0` 和 `::` 分配相同的臨時埠,而 `-p 8080-8083:80` 將從該範圍為這兩個地址族選擇相同的埠。
- 同樣,釋出到特定地址的埠也將分配相同的埠。例如,`-p 127.0.0.1::80 -p '[::1]::80'`。
- 如果所有所需地址上都沒有可用埠,則容器建立將失敗。
- 在 26.1.1 版本中引入的環境變數 `DOCKER_ALLOW_IPV6_ON_IPV4_INTERFACE` 不再有任何作用。moby/moby#47963
- 如果由於 `/proc/sys/net` 是隻讀的而無法在介面上停用 IPv6,則環境變數允許容器無論如何都可以啟動。
- 在此版本中,如果無法為介面停用 IPv4,則只需在建立網路時使用 `--ipv6` 即可明確為網路啟用 IPv6。其他解決方法是配置作業系統預設停用新介面上的 IPv6,掛載 `/proc/sys/net` 為讀寫,或使用不支援 IPv6 的核心。
- 對於啟用 IPv6 的橋接網路,不要嘗試將橋接器的核心分配的鏈路本地地址替換為 `fe80::1`。moby/moby#47787
已移除
- 棄用實驗性 GraphDriver 外掛。moby/moby#48050、docker/cli#5172
- pkg/archive:棄用 `NewTempArchive` 和 `TempArchive`。這些型別僅用於測試,將在下一個版本中移除。moby/moby#48002
- pkg/archive:棄用 `CanonicalTarNameForPath` moby/moby#48001
- 棄用 pkg/dmesg。此包不再使用,將在下一個版本中移除。moby/moby#47999
- 棄用 `pkg/stringid.ValidateID` 和 `pkg/stringid.IsShortID` moby/moby#47995
- runconfig: 棄用 `SetDefaultNetModeIfBlank` 並將 `ContainerConfigWrapper` 移至 `api/types/container`。moby/moby#48007
- runconfig: 棄用 `DefaultDaemonNetworkMode` 並移至 `daemon/network`。moby/moby#48008
- runconfig: 棄用 `opts.ConvertKVStringsToMap`。此實用程式不再使用,將在下一個版本中移除。moby/moby#48016
- runconfig: 棄用 `IsPreDefinedNetwork`。moby/moby#48011
API
- containerd 映象儲存:`POST /images/{name}/push` 現在支援 `platform` 引數(JSON 編碼的 OCI Platform 型別),允許從多平臺映象中選擇特定的平臺清單。這是一個實驗性功能,可能會在未來的 API 版本中更改。moby/moby#47679
- `POST /services/create` 和 `POST /services/{id}/update` 現在支援 `OomScoreAdj`。moby/moby#47950
- `ContainerList` API 返回容器註釋。moby/moby#47866
- `POST /containers/create` 和 `POST /services/create` 現在接受 `Options` 作為 `HostConfig.Mounts.TmpfsOptions` 的一部分,允許設定 tmpfs 掛載的選項。moby/moby#46809
- 當使用低於 v1.44 的 API 版本更新 Swarm 服務時,`Healthcheck.StartInterval` 屬性現在已正確忽略。moby/moby#47991
- `GET /events` 現在支援映象 `create` 事件,該事件在構建新映象時發出,無論是否標記。moby/moby#47929
- `GET /info` 現在包含一個 `Containerd` 欄位,其中包含有關 containerd API socket 位置以及守護程序用於執行容器和外掛的 containerd 名稱空間的資訊。moby/moby#47239
- 棄用映象檢查輸出中的非標準(config)欄位。此端點(用於 `docker image inspect`)返回的 `Config` 欄位返回了不屬於映象配置且不屬於 Docker 映象規範 和 OCI 映象規範 的附加欄位。這些欄位從未設定(並且總是返回該型別的預設值),但在為空時不會在響應中省略。由於這些欄位不打算作為映象配置響應的一部分,因此它們已被棄用,並將在未來的 API 版本中移除。
- 棄用守護程序標誌 `--api-cors-header` 和相應的 `daemon.json` 配置選項。這些將在下一個主要版本中移除。moby/moby#45313
以下已棄用的欄位目前包含在 API 響應中,但不屬於底層映象的 `Config`:moby/moby#47941
Hostname
Domainname
AttachStdin
AttachStdout
AttachStderr
Tty
OpenStdin
StdinOnce
Image
- `NetworkDisabled`(除非設定,否則已省略)
- `MacAddress`(除非設定,否則已省略)
- `StopTimeout`(除非設定,否則已省略)
Go SDK 更改
- 以下函式的客戶端 API 回撥現在需要上下文引數。moby/moby#47536
client.RequestPrivilegeFunc
client.ImageSearchOptions.AcceptPermissionsFunc
image.ImportOptions.PrivilegeFunc
- 刪除 Image 型別的已棄用別名。moby/moby#47900
ImageImportOptions
ImageCreateOptions
ImagePullOptions
ImagePushOptions
ImageListOptions
ImageRemoveOptions
- 引入 `Ulimit` 類型別名,指向 `github.com/docker/go-units.Ulimit`。API 中使用的 `Ulimit` 型別定義在一個 Go 模組中,該模組將在未來遷移到新位置。新增類型別名是為了減少將型別移動到新位置帶來的摩擦。該別名確保現有程式碼繼續工作,但其定義可能會在未來更改。建議使用者使用此別名而不是直接使用 `units.Ulimit`。moby/moby#48023
移動和重新命名型別,更改其匯入路徑和匯出名稱。moby/moby#47936、moby/moby#47873、moby/moby#47887、moby/moby#47882、moby/moby#47921、moby/moby#48040
- 將以下型別移動到 `api/types/container`
BlkioStatEntry
BlkioStats
CPUStats
CPUUsage
ContainerExecInspect
ContainerPathStat
ContainerStats
ContainersPruneReport
CopyToContainerOptions
ExecConfig
ExecStartCheck
MemoryStats
NetworkStats
PidsStats
StatsJSON
Stats
StorageStats
ThrottlingData
- 將以下型別移動到 `api/types/image`
ImagesPruneReport
ImageImportSource
ImageLoadResponse
- 將 `ExecStartOptions` 型別移動到 `api/types/backend`。
- 將 `VolumesPruneReport` 型別移動到 `api/types/volume`。
- 將 `EventsOptions` 型別移動到 `api/types/events`。
- 將 `ImageSearchOptions` 型別移動到 `api/types/registry`。
- 刪除 `Network` 字首並將以下型別移動到 `api/types/network`
NetworkCreateResponse
NetworkConnect
NetworkDisconnect
NetworkInspectOptions
EndpointResource
NetworkListOptions
NetworkCreateOptions
NetworkCreateRequest
NetworksPruneReport
- 將 `NetworkResource` 移動到 `api/types/network`。
打包更新
- 將 Buildx 更新到 v0.15.1。docker/docker-ce-packaging#1029
- 將 BuildKit 更新到 v0.14.1。moby/moby#48028
- 將 runc 更新到 v1.1.13 moby/moby#47976
- 將 Compose 更新到 v2.28.1。moby/docker-ce-packaging#1032
27.0.0
由於在 27.0.0-rc.1 在 GitHub 上預釋出期間的失誤,導致建立了 v27.0.0 標籤,因此沒有 27.0.0 版本。不幸的是,該標籤已被 Go Module Mirror 拾取,因此無法乾淨地更改 v27.0.0。為解決此問題,27.0.1 將成為 27.0 的第一個版本。