Docker Engine 19.03 版本說明
19.03.15
2021-02-01
安全性
- CVE-2021-21285 防止無效映像檔使 Docker 守護程式崩潰
- CVE-2021-21284 鎖定檔案權限,防止重新映射的根使用者存取 Docker 狀態
- 確保使用 BuildKit 建置時,AppArmor 和 SELinux 設定檔已套用
用戶端
- 在匯入上下文之前檢查,以降低解壓縮檔案逸出上下文儲存的風險
19.03.14
2020-12-01
安全性
- CVE-2020-15257:將 containerd 捆綁的靜態二進位檔更新至 v1.3.9 moby/moby#41731。套件管理員應更新 containerd.io 套件。
建置器
- AppArmor 的 Beta 版本現在能正確解析,防止建置失敗 moby/moby#41542
網路
- 修正 Swarmkit 服務持續啟動失敗時的恐慌錯誤 moby/moby#41635
執行時期
- 返回正確的錯誤而非虛假的 -EINVAL 錯誤 moby/moby#41293
無根模式
- 鎖定狀態目錄,防止 systemd-tmpfiles 自動清理 moby/moby#41635
- dockerd-rootless.sh:支援新的 containerd shim socket 路徑慣例 moby/moby#41557
日誌記錄
- gcplogs:修正記憶體/連線洩漏 moby/moby#41522
- awslogs:支援 AWS imdsv2 moby/moby#41494
19.03.13
2020-09-16
建置器
- buildkit:修正快取邏輯中的 nil 解引用錯誤 moby/moby#41279
- buildkit:在 COPY/ADD 期間將 Unix socket 視為常規檔案 moby/moby#41269
- buildkit:在計算中忽略系統和安全性 xattrs,以確保無論 SELinux 環境如何,COPY 快取都保持一致 moby/moby#41222
- buildkit:使 `--cache-from` 行為更可靠 moby/moby#41222
- buildkit:修正匯出快取時導致 CPU 過載的無限迴圈錯誤 moby/moby#41185
用戶端
- 將 Golang 升級至 1.13.15 docker/cli#2674
- 修正設定檔權限問題 (~/.docker/config.json) docker/cli#2631
- 建置:修正終端機高度為零時的恐慌錯誤 docker/cli#2719
- Windows:修正主控台中換行符可能引起的問題 docker/cli#2623
網路
- 失敗時清理網路沙箱 moby/moby#41081
- 修正淺層錯誤訊息,將與截止時間相關的錯誤轉發給使用者 moby/moby#41312
- 修正 netns 檔案描述符洩漏 moby/moby#41287
無根模式
- 修正埠轉發器資源洩漏 moby/moby#41277
執行時期
- 將 Golang 升級至 1.13.15 moby/moby#41334
- 更新至 containerd 1.3.7 moby/moby#40408
Windows
- 修正使用 servercore 映像檔時 Windows 容器啟動時間緩慢的問題 moby/moby#41192
19.03.12
2020-06-18
用戶端
- 修正使用多個設定檔(例如使用 Docker Desktop 時的 Windows 與 WSL2)時無法從註冊表登出的錯誤 docker/cli#2592
- 修正阻止讀取上下文中繼資料的迴歸錯誤 docker/cli#2586
- 將 Golang 升級至 1.13.12 docker/cli#2575
網路
- 修正阻止守護程式在 systemd-nspawn 環境中啟動的迴歸錯誤 moby/moby#41124 moby/libnetwork#2567
- 修正 Swarm 中建立覆蓋網路的重試邏輯 moby/moby#41124 moby/libnetwork#2565
執行時期
- 將 Golang 升級至 1.13.12 moby/moby#41082
19.03.11
2020-06-01
網路
停用 IPv6 路由器公告,防止位址欺騙。 CVE-2020-13401
描述
在 Docker 的預設配置中,容器網路介面是連接到主機的虛擬乙太網路連結(veth 介面)。在此配置下,攻擊者能夠在容器中以 root 身份執行進程,並使用 `CAP_NET_RAW` 能力(存在於預設配置中)向主機發送和接收任意封包。
如果主機上未完全禁用 IPv6(通過核心 cmdline 上的 `ipv6.disable=1`),則它將在某些介面上未配置或已配置,但 IPv6 轉發很可能被禁用,即 `/proc/sys/net/ipv6/conf//forwarding == 0`。此外,預設情況下,`/proc/sys/net/ipv6/conf//accept_ra == 1`。這兩個 sysctl 的組合意味著主機接受路由器公告並使用它們配置 IPv6 堆疊。
通過從容器發送「惡意」路由器公告,攻擊者可以重新配置主機,將主機的部分或所有 IPv6 流量重定向到攻擊者控制的容器。
即使之前沒有 IPv6 流量,如果 DNS 返回 A (IPv4) 和 AAAA (IPv6) 記錄,許多 HTTP 函式庫會嘗試先通過 IPv6 連接,然後回退到 IPv4,這給了攻擊者回應的機會。如果主機碰巧存在像去年 apt 中的 RCE 漏洞(CVE-2019-3462),攻擊者現在可以升級到主機。
由於 Docker 容器預設不包含 `CAP_NET_ADMIN`,攻擊者無法配置他們想要進行中間人攻擊的 IP,他們無法使用 iptables 來進行 NAT 或重定向流量,也無法使用 `IP_TRANSPARENT`。但是,攻擊者仍然可以使用 `CAP_NET_RAW` 並在使用者空間中實作 tcp/ip 堆疊。
有關相關問題,請參閱 kubernetes/kubernetes#91507。
19.03.10
2020-05-29
用戶端
- 修正與舊版引擎的版本協商問題。 docker/cli#2538
- 避免通過主機名稱設定 SSH 標誌。 docker/cli#2560
- 修正 DOCKER_CLI_EXPERIMENTAL 無效時的恐慌錯誤。 docker/cli#2558
- 通過將 Go 升級到 1.13.11,避免 s390x 上可能發生的恐慌錯誤。 docker/cli#2532
網路
- 修正 DNS 回退迴歸錯誤。 moby/moby#41009
執行時期
- 通過將 Go 升級到 1.13.11,避免 s390x 上可能發生的恐慌錯誤。 moby/moby#40978
打包
- 修正 ARM64 上的 ARM 建置問題。 moby/moby#41027
19.03.9
2020-05-14
建置器
- buildkit:修正並行建置多個映像檔時併發 map 寫入的恐慌錯誤。 moby/moby#40780
- buildkit:修正使用使用者命名空間時,在不同階段之間無法變更非 root 擁有檔案的所有權問題。 moby/moby#40955
- 避免在 Windows 上創建不相關的暫存檔。 moby/moby#40877
用戶端
- 修正單字元磁碟區上的恐慌錯誤。 docker/cli#2471
- 守護程式功能延遲檢測,以避免簡單命令上的長時間超時。 docker/cli#2442
- Windows 上的 `docker context inspect` 現在更快。 docker/cli#2516
- 將 Golang 升級至 1.13.10。 docker/cli#2431
- 將 gopkg.in/yaml.v2 升級至 v2.2.8。 docker/cli#2470
日誌記錄
- 避免因關閉已關閉的日誌檔而導致容器日誌無法輪轉的情況。 moby/moby#40921
網路
- 修正重新啟動時可能發生的恐慌錯誤。 moby/moby#40809
- 將正確的網路值分配給預設橋接子網路欄位。 moby/moby#40565
執行時期
- 修正使用 /etc/subuid 和 /etc/subgid 中的 UID 創建命名空間時 Docker 崩潰的問題。 moby/moby#40562
- 改善 ARM 平台匹配。 moby/moby#40758
- overlay2:顯示後端檔案系統。 moby/moby#40652
- 將 CRIU 更新至 v3.13「Silicon Willet」。 moby/moby#40850
- 僅在成功回退時顯示註冊表 v2 schema1 廢棄警告,而不是在任何註冊表錯誤時都顯示。 moby/moby#40681
- 在 Windows 上對日誌檔使用 FILE_SHARE_DELETE。 moby/moby#40563
- 將 Golang 升級至 1.13.10。 moby/moby#40803
無根模式
- 現在 rootlesskit-docker-proxy 在暴露特權埠時會返回詳細的錯誤訊息。 moby/moby#40863
- 支援 /etc/subuid 和 /etc/subgid 中的數字 ID。 moby/moby#40951
安全性
- apparmor:為使用者命名空間添加缺失的規則。 moby/moby#40564
- SELinux:修正重新標記時無法檢測到 ENOTSUP 錯誤。 moby/moby#40946
Swarm
- 增加記錄器的填充速率,以避免服務日誌掛起。 moby/moby#40628
- 修正單一 Swarm 管理員在重新啟動後卡在「Down」狀態的問題。 moby/moby#40831
- tasks.db 不再無限增長。 moby/moby#40831
19.03.8
2020-03-10
執行時期
- 針對某些 nscd 配置改進 CVE-2019-14271 的緩解措施。
19.03.7
2020-03-03
建置器
- builder-next:修正特殊情況下的死鎖問題。 moby/moby#40557
執行時期
- overlay:移除 modprobe 執行。 moby/moby#40462
- SELinux:設定檔案標籤時顯示更好的錯誤訊息。 moby/moby#40547
- 加快初始統計資料收集。 moby/moby#40549
- 無根模式:從 XDG_CONFIG_HOME 使用 certs.d。 moby/moby#40461
- 將 Golang 升級至 1.12.17。 moby/moby#40533
- 將 google.golang.org/grpc 升級至 v1.23.1。 moby/moby#40566
- 將 containerd 二進位檔更新至 v1.2.13。 moby/moby#40540
- 在邊緣情況下,防止將已停止的容器顯示為正在運行。 moby/moby#40555
- 防止潛在鎖定。 moby/moby#40604
用戶端
- 將 Golang 升級至 1.12.17。 docker/cli#2342
- 將 google.golang.org/grpc 升級至 v1.23.1。 docker/cli#1884 docker/cli#2373
19.03.6
2020-02-12
建置器
- builder-next:允許 SSH 轉發使用現代簽名雜湊。 docker/engine#453
- builder-next:觸發後清除 onbuild 規則。 docker/engine#453
- builder-next:修正啟用使用者命名空間時目錄權限的問題。 moby/moby#40440
- 升級 hcsshim 以修正 Docker 建置在 Windows 1903 上失敗的問題。 docker/engine#429
網路
- 縮短 exec-root 中的控制器 ID,以避免達到 UNIX_PATH_MAX。 docker/engine#424
- 修正 drivers/overlay/encryption.go 中的恐慌錯誤。 docker/engine#424
- 修正我們和 udev 之間的 hwaddr 設定競態條件。 docker/engine#439
執行時期
- 將 Golang 升級至 1.12.16。 moby/moby#40433
- 將 containerd 二進位檔更新至 v1.2.12。 moby/moby#40433
- 更新至 runc v1.0.0-rc10。 moby/moby#40433
- 修正 Lgetxattr 中可能發生的運行時恐慌錯誤。 docker/engine#454
- 無根模式:修正 UDP 封包代理。 docker/engine#434
19.03.5
2019-11-14
建置器
- builder-next:在建置器設定中添加了 `entitlements`。 docker/engine#412
- 修正 builder-next:使用使用者命名空間重映射時,使用建置密鑰或 SSH 轉發的權限錯誤。 docker/engine#420
- 修正 builder-next:將符號連結複製到已複製目錄中的問題。 docker/engine#420
打包
- 支援 RHEL 8 套件
執行時期
- 將 Golang 升級至 1.12.12。 docker/engine#418
- 將 RootlessKit 更新至 v0.7.0,以使用掛載命名空間和 seccomp 加強 slirp4netns。 docker/engine#397
- 修正從事件處理器傳播 GetContainer 錯誤。 docker/engine#407
- 修正 OCI 映像檔推送到問題。 docker/engine#405
19.03.4
2019-10-17
網路
- 回滾 libnetwork 變更以修正 `DOCKER-USER` iptables 鏈問題。 docker/engine#404
已知問題
現有問題
- 在某些大型叢集的情況下,Docker 資訊在 Swarm 部分可能會包含錯誤 `code = ResourceExhausted desc = grpc: received message larger than max (5351376 vs. 4194304)`。這不表示使用者有任何故障或錯誤配置,也無需回應。
- 當重新部署所有服務時,可能會發生協調器埠衝突。由於在短時間內有許多 Swarm 管理員請求,某些服務無法接收流量,並在部署後導致 `404` 錯誤。
- 解決方法:通過 `docker service update --force` 重新啟動所有任務。
- CVE-2018-15664 符號連結交換攻擊,帶目錄遍歷。在即將發布的修補版本中提供適當修正之前,暫時解決方法是:在執行檔案操作之前 `docker pause` 容器。 moby/moby#39252
- 由於 CVE 緩解措施導致 `docker cp` 迴歸。當 `docker cp` 的來源設定為 `/` 時會產生錯誤。
19.03.3
2019-10-08
安全性
- 修補了 containerd 中的 `runc`。 CVE-2017-18367
建置器
修正 builder-next:修正第三方註冊表的摘要解析問題。 docker/engine#339
修正 builder-next:修正守護程式通過 socket 啟動時的使用者命名空間建置問題。 docker/engine#373
修正 builder-next;會話:每個連線釋放轉發的 SSH socket 連線。 docker/engine#373
修正 build-next:llbsolver:多個快取匯入器錯誤。 docker/engine#373
用戶端
添加了對 Docker Template 0.1.6 的支援。
緩解具有過多別名的 YAML 檔案問題。 docker/cli#2119
執行時期
將 Golang 升級至 1.12.10。 docker/engine#387
將 containerd 升級至 1.2.10。 docker/engine#385
分發:拉取 v2 schema1 清單時修改警告邏輯。 docker/engine#368
修正提供不正確的平台選項時 `POST /images/create` 返回 500 狀態碼的問題。 docker/engine#365
修正提供不正確的平台選項時 `POST /build` 返回 500 狀態碼的問題。 docker/engine#365
修正由結構成員未對齊導致的 32 位 ARMv7 恐慌錯誤。 docker/engine#363
修正連結到不存在的容器時返回「無效參數」的問題。 docker/engine#352
修正 overlay2:使用核心版本 >= 5.2 時在掛載時出現忙碌錯誤的問題。 docker/engine#332
修正 `docker rmi` 在某些配置錯誤的系統(例如死掉的 NFS 共用)中卡住的問題。 docker/engine#335
修正處理執行進程的阻塞 I/O 問題。 docker/engine#296
修正 jsonfile 記錄器:當設定 `max-size` 且 `max-file=1` 時,日誌追蹤卡住的問題。 docker/engine#378
已知問題
新增功能
- `DOCKER-USER` iptables 鏈缺失:docker/for-linux#810。使用者無法在此 iptables 鏈之上執行額外的容器網路流量過濾。如果您沒有在 `DOCKER-USER` 之上自訂 iptables 鏈,則不會受到此問題影響。
- 解決方法:在 Docker 守護程式啟動後插入 iptables 鏈。例如
iptables -N DOCKER-USER iptables -I FORWARD -j DOCKER-USER iptables -A DOCKER-USER -j RETURN
- 解決方法:在 Docker 守護程式啟動後插入 iptables 鏈。例如
現有問題
- 在某些大型叢集的情況下,Docker 資訊在 Swarm 部分可能會包含錯誤 `code = ResourceExhausted desc = grpc: received message larger than max (5351376 vs. 4194304)`。這不表示使用者有任何故障或錯誤配置,也無需回應。
- 當重新部署所有服務時,可能會發生協調器埠衝突。由於在短時間內有許多 Swarm 管理員請求,某些服務無法接收流量,並在部署後導致 `404` 錯誤。
- 解決方法:通過 `docker service update --force` 重新啟動所有任務。
- CVE-2018-15664 符號連結交換攻擊,帶目錄遍歷。在即將發布的修補版本中提供適當修正之前,暫時解決方法是:在執行檔案操作之前 `docker pause` 容器。 moby/moby#39252
- 由於 CVE 緩解措施導致 `docker cp` 迴歸。當 `docker cp` 的來源設定為 `/` 時會產生錯誤。
19.03.2
2019-09-03
建置器
修正 Windows 上 `COPY --from` 到不存在目錄的問題。 moby/moby#39695
修正 builder-next:歷史記錄中中繼資料命令沒有建立時間的問題。 moby/moby#39456
修正 builder-next:修正層匯出錯誤時關閉進度。 moby/moby#39782
將 buildkit 更新至 588c73e1e4。 moby/moby#39781
用戶端
修正非 Windows 系統上 Windows 絕對路徑檢測的問題 docker/cli#1990
修正 `docker login --username` 的 zsh 自動補齊腳本。
修正上下文:在 `context create` 上產生一致的輸出。 docker/cli#1985
修正對 HTTP 代理環境變數的支援。 docker/cli#2059
日誌記錄
- 修正讀取 journald 日誌的問題。 moby/moby#37819 moby/moby#38859
網路
- 防止網路連接到已禁用網路的容器時發生恐慌。 moby/moby#39589
執行時期
將 Golang 升級至 1.12.8。
修正為容器使用 XFS 磁碟配額時可能發生的引擎恐慌。 moby/moby#39644
Swarm
- 修正具有多個任務的節點無法被移除的問題。 docker/swarmkit#2867
已知問題
在某些大型叢集的情況下,Docker 資訊在 Swarm 部分可能會包含錯誤 `code = ResourceExhausted desc = grpc: received message larger than max (5351376 vs. 4194304)`。這不表示使用者有任何故障或錯誤配置,也無需回應。
當重新部署所有服務時,可能會發生協調器埠衝突。由於在短時間內有許多 Swarm 管理員請求,某些服務無法接收流量,並在部署後導致 `404` 錯誤。
- 解決方法:通過 `docker service update --force` 重新啟動所有任務。
由於 FORWARD 鏈中缺少 Iptables 規則,流量無法從主機流出。缺失的規則為
/sbin/iptables --wait -C FORWARD -o docker_gwbridge -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT /sbin/iptables --wait -C FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT- 解決方法:使用腳本和 cron 定義將這些規則添加回來。腳本必須包含 '-C' 命令來檢查規則是否存在,並包含 '-A' 命令來添加規則。定期運行該腳本,例如每
分鐘。 - 受影響版本:18.09.1, 19.03.0
- 解決方法:使用腳本和 cron 定義將這些規則添加回來。腳本必須包含 '-C' 命令來檢查規則是否存在,並包含 '-A' 命令來添加規則。定期運行該腳本,例如每
CVE-2018-15664 符號連結交換攻擊,帶目錄遍歷。在即將發布的修補版本中提供適當修正之前,暫時解決方法是:在執行檔案操作之前 `docker pause` 容器。 moby/moby#39252
由於 CVE 緩解措施導致 `docker cp` 迴歸。當 `docker cp` 的來源設定為 `/` 時會產生錯誤。
19.03.1
2019-07-25
安全性
- 修正了在 Glibc 下 chroot 內部載入基於 nsswitch 的配置問題。 CVE-2019-14271
已知問題
在某些大型叢集的情況下,Docker 資訊在 Swarm 部分可能會包含錯誤 `code = ResourceExhausted desc = grpc: received message larger than max (5351376 vs. 4194304)`。這不表示使用者有任何故障或錯誤配置,也無需回應。
當重新部署所有服務時,可能會發生協調器埠衝突。由於在短時間內有許多 Swarm 管理員請求,某些服務無法接收流量,並在部署後導致 `404` 錯誤。
- 解決方法:通過 `docker service update --force` 重新啟動所有任務。
由於 FORWARD 鏈中缺少 Iptables 規則,流量無法從主機流出。缺失的規則為
/sbin/iptables --wait -C FORWARD -o docker_gwbridge -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT /sbin/iptables --wait -C FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT- 解決方法:使用腳本和 cron 定義將這些規則添加回來。腳本必須包含 '-C' 命令來檢查規則是否存在,並包含 '-A' 命令來添加規則。定期運行該腳本,例如每
分鐘。 - 受影響版本:18.09.1, 19.03.0
- 解決方法:使用腳本和 cron 定義將這些規則添加回來。腳本必須包含 '-C' 命令來檢查規則是否存在,並包含 '-A' 命令來添加規則。定期運行該腳本,例如每
CVE-2018-15664 符號連結交換攻擊,帶目錄遍歷。在即將發布的修補版本中提供適當修正之前,暫時解決方法是:在執行檔案操作之前 `docker pause` 容器。 moby/moby#39252
由於 CVE 緩解措施導致 `docker cp` 迴歸。當 `docker cp` 的來源設定為 `/` 時會產生錯誤。
19.03.0
2019-07-22
建置器
修正 `COPY --from` 以保留所有權。 moby/moby#38599
builder-next
- 添加了內聯快取支援 `--cache-from`。 docker/engine#215
- 允許輸出配置。 moby/moby#38898
- 修正 gcr 權宜之計的令牌快取。 docker/engine#212
- 下載錯誤時調用 `stopprogress`。 docker/engine#215
- Buildkit 現在使用 systemd 的 `resolv.conf`。 docker/engine#260。
- 現在允許設定 buildkit 輸出。 docker/cli#1766
- 尋找 Dockerfile 特定的 dockerignore 檔案(例如 Dockerfile.dockerignore)以忽略路徑。 docker/engine#215
- 自動檢測 x86、arm 和 arm64 二進位檔是否可以執行進程。 docker/engine#215
- 將 buildkit 更新至 1f89ec1。 docker/engine#260
- 預設使用 Dockerfile 前端版本 `docker/dockerfile:1.1`。 docker/engine#215
- COPY/ADD 操作不再依賴外部映像檔。 docker/engine#215
用戶端
- 為 `docker update` 添加了 `--pids-limit` 旗標。 docker/cli#1765
- 為服務添加了 systctl 支援。 docker/cli#1754
- 在 compose 檔案中添加了對 `template_driver` 的支援。 docker/cli#1746
- 為 Windows 添加了 `--device` 支援。 docker/cli#1606
- 添加了對資料路徑埠配置的支援。 docker/cli#1509
- 添加了快速上下文切換:命令。 docker/cli#1501
- 添加了對 `--mount type=bind,bind-nonrecursive,...` 的支援 docker/cli#1430
- 添加了每個節點的最大副本數。 docker/cli#1612
- 添加了靜默拉取映像檔的選項。 docker/cli#882
- 添加了一個單獨的 `--domainname` 旗標。 docker/cli#1130
- 在 `docker stack deploy` 中添加了對密鑰驅動程式的支援。 docker/cli#1783
- 添加了在服務上將 swarm `Configs` 作為 `CredentialSpecs` 使用的功能。 docker/cli#1781
- 添加了 `--security-opt systempaths=unconfined` 支援。 docker/cli#1808
- 添加了用於編寫和運行 CLI 外掛程式的基本框架。 docker/cli#1564 docker/cli#1898
- 將 Docker App 升級至 v0.8.0。 docker/docker-ce-packaging#341
- 添加了對 Docker buildx 的支援。 docker/docker-ce-packaging#336
- 添加了對 Docker Assemble v0.36.0 的支援。
- 添加了對 Docker Cluster v1.0.0-rc2 的支援。
- 添加了對 Docker Template v0.1.4 的支援。
- 添加了對 Docker Registry v0.1.0-rc1 的支援。
- 將 google.golang.org/grpc 升級至 v1.20.1。 docker/cli#1884
- CLI 已更改為將驅動程式特定選項傳遞給 `docker run`。 docker/cli#1767
- 將 Golang 升級至 1.12.5。 docker/cli#1875
- `docker system info` 輸出現在將客戶端和守護程式相關資訊分開。 docker/cli#1638
- (實驗性) 當目標為 Kubernetes 時,在 compose 檔案服務配置中添加了對 `x-pull-secret: some-pull-secret` 的支援。 docker/cli#1617
- (實驗性) 當目標為 Kubernetes 時,在 compose 檔案服務配置中添加了對 `x-pull-policy: <Never|Always|IfNotPresent>` 的支援。 docker/cli#1617
- cp, save, export:現在防止覆寫不規則檔案。 docker/cli#1515
- stack 檔案中的 npipe 磁碟區類型現在被允許。 docker/cli#1195
- 修正 tty 初始大小錯誤。 docker/cli#1529
- 修正標籤從環境變數複製值的問題。 docker/cli#1671
API
- API 版本已更新至 v1.40。 moby/moby#38089
- 為 `/info` 端點添加了警告,並將檢測移至守護程式。 moby/moby#37502
- 為 `/_ping` 端點添加了 HEAD 支援。 moby/moby#38570
- 為 `/_ping` 端點添加了 `Cache-Control` 標頭以禁用快取。 moby/moby#38569
- 為 `/version` 添加了 `containerd`、`runc` 和 `docker-init` 版本。 moby/moby#37974
- 添加了未記錄的 `/grpc` 端點並註冊了 BuildKit 的控制器。 moby/moby#38990
實驗性功能
- 啟用帶 TTY 的容器檢查點/恢復。 moby/moby#38405
- LCOW:添加了對記憶體和 CPU 限制的支援。 moby/moby#37296
- Windows:添加了 ContainerD 運行時。 moby/moby#38541
- Windows:LCOW 現在需要 Windows RS5+。 moby/moby#39108
安全性
- 掛載:添加了 BindOptions.NonRecursive (API v1.40)。 moby/moby#38003
- seccomp:將 `io_pgetevents()` 列入白名單。 moby/moby#38895
- seccomp:現在允許 4.8+ 核心的 `ptrace(2)`。 moby/moby#38137
執行時期
- 現在允許以非 root 使用者身份運行 `dockerd`(無根模式)。 moby/moby#380050
- 無根模式:為 `lxc-user-nic` SUID 二進位檔提供可選支援。 docker/engine#208
- 為 HostConfig 添加了 DeviceRequests 以支援 NVIDIA GPU。 moby/moby#38828
- 為 Windows 添加了 `--device` 支援。 moby/moby#37638
- 為 Linux 添加了 `memory.kernelTCP` 支援。 moby/moby#37043
- Windows 憑證規範現在可以直接傳遞給引擎。 moby/moby#38777
- 在 docker update 中添加了 pids-limit 支援。 moby/moby#32519
- 添加了對精確能力列表的支援。 moby/moby#38380
- 守護程式:現在預設使用「private」IPC 模式。 moby/moby#35621
- 守護程式:切換到信號量閘控的 WaitGroup 進行啟動任務。 moby/moby#38301
- 現在使用 `idtools.LookupGroup` 而不是解析 `/etc/group` 檔案來確定 docker.sock 的所有權,以修正:`api.go 不尊重 nsswitch.conf`。 moby/moby#38126
- cli:修正使用多參考過濾器時的映像檔過濾器。 moby/moby#38171
- 將 Golang 升級至 1.12.5。 docker/engine#209
- 將 `containerd` 升級至 1.2.6。 moby/moby#39016
- 將 `runc` 升級至 1.0.0-rc8,opencontainers/selinux v1.2.2。 docker/engine#210
- 將 `google.golang.org/grpc` 升級至 v1.20.1。 docker/engine#215
- 在 aufs 和層儲存中優化性能,以實現大規模並行容器創建/移除。 moby/moby#39135 moby/moby#39209
- Root 現在傳遞給 chroot 以進行 chroot Tar/Untar (CVE-2018-15664) moby/moby#39292
- 修正帶有 /dev 綁定掛載的 `docker --init`。 moby/moby#37665
- 當設備號大於 255 並使用 `--device-read-bps` 選項時,現在會獲取正確的設備號。 moby/moby#39212
- 修正路徑確實存在時卻顯示「路徑不存在」的錯誤。 moby/moby#39251
網路
- 將 IPVLAN 驅動程式移出實驗性功能。 moby/moby#38983
- 添加了對「dangling」過濾器的支援。 moby/moby#31551 docker/libnetwork#2230
- 當服務使用 `--network-rm` 更新時,負載平衡器沙箱現在會被刪除。 docker/engine#213
- Windows:現在強制將 `PortBindings` 中指定的 nil IP 設為 IPv4zero (0.0.0.0)。 docker/libnetwork#2376
Swarm
- 添加了每個節點的最大副本數。 moby/moby#37940
- 添加了對來自 Swarmkit 配置的 GMSA CredentialSpecs 的支援。 moby/moby#38632
- 在服務中添加了對 sysctl 選項的支援。 moby/moby#37701
- 添加了對節點標籤過濾的支援。 moby/moby#37650
- Windows:在 docker service create + stack yml 中添加了對命名管道掛載的支援。 moby/moby#37400
- 現在支援 VXLAN UDP 埠配置。 moby/moby#38102
- 現在在 Enforcer 中使用服務放置約束。 docker/swarmkit#2857
- 增加了節點和密鑰的最大接收 gRPC 訊息大小。 docker/engine#256
日誌記錄
- 在 Windows 上啟用 gcplogs 驅動程式。 moby/moby#37717
- 為 RFC5424 syslog 格式添加了零填充。 moby/moby#38335
- 為 `journald` 日誌事件添加了 `IMAGE_NAME` 屬性。 moby/moby#38032
棄用
- 棄用映像檔清單 v2 schema1,轉而使用 v2 schema2。未來的 Docker 版本將完全移除對 v2 schema1 的支援。 moby/moby#39365
- 移除了 v1.10 移轉器。 moby/moby#38265
- 現在自動選擇時跳過棄用的儲存驅動程式。 moby/moby#38019
- 棄用 `aufs` 儲存驅動程式並添加警告。 moby/moby#38090
- 移除了對 17.09 的支援。
有關棄用旗標和 API 的更多資訊,請參閱 棄用資訊 以了解目標移除日期。
已知問題
在某些大型叢集的情況下,Docker 資訊在 Swarm 部分可能會包含錯誤 `code = ResourceExhausted desc = grpc: received message larger than max (5351376 vs. 4194304)`。這不表示使用者有任何故障或錯誤配置,也無需回應。
當重新部署所有服務時,可能會發生協調器埠衝突。由於在短時間內有許多 Swarm 管理員請求,某些服務無法接收流量,並在部署後導致 `404` 錯誤。
- 解決方法:通過 `docker service update --force` 重新啟動所有任務。
由於 FORWARD 鏈中缺少 Iptables 規則,流量無法從主機流出。缺失的規則為
/sbin/iptables --wait -C FORWARD -o docker_gwbridge -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT /sbin/iptables --wait -C FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT- 解決方法:使用腳本和 cron 定義將這些規則添加回來。腳本必須包含 '-C' 命令來檢查規則是否存在,並包含 '-A' 命令來添加規則。定期運行該腳本,例如每
分鐘。 - 受影響版本:18.09.1, 19.03.0
- 解決方法:使用腳本和 cron 定義將這些規則添加回來。腳本必須包含 '-C' 命令來檢查規則是否存在,並包含 '-A' 命令來添加規則。定期運行該腳本,例如每
CVE-2018-15664 符號連結交換攻擊,帶目錄遍歷。在即將發布的修補版本中提供適當修正之前,暫時解決方法是:在執行檔案操作之前 `docker pause` 容器。 moby/moby#39252
由於 CVE 緩解措施導致 `docker cp` 迴歸。當 `docker cp` 的來源設定為 `/` 時會產生錯誤。