Ubunto 24.04 下 Docker Desktop 開啟無反應問題解決和原因

卡卡一点都不卡發表於2024-08-15

背景

系統環境:Ubuntu 24.04 LTS
Docker 版本:Docker version 26.1.4

問題表象:

開啟 Docker Desktop 之後,無任何反應,使用命令列直接執行 Docker Desktop,提示:
running under systemd

解決方案

命令列執行如下指令

$ sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
$ systemctl --user restart docker-desktop

隨後重新開啟 Docker Desktop,即可正常執行

注意:該方式每次系統重啟後都需要重新來一遍,你也可以透過
建立檔案 /etc/sysctl.d/20-apparmor.conf or /etc/sysctl.d/60-apparmor-namespace.conf 來寫入這部分配置:
kernel.apparmor_restrict_unprivileged_userns = 0
但後續 bug 修復後最好移除掉,具體原因看後面的解釋

具體可以跳轉:解決方案來源

問題原因

透過上面的解決方案來源連結裡,有一個 Spikhalskiy 老哥提到,這是 Electron 和 Chromium 的問題:electron/electron#41066,最初的解決方案也是在這裡提供的:electron/electron#41066 (comment)
透過這個 bug 的描述可以得知,由於在 Ubuntu 24.04 LTS 下 kernel.apparmor_restrict_unprivileged_userns=1 的預設配置,導致所有 Electron 應用都無法正常開啟。

實際上更深層次的原因,是和 Ubuntu 24.04 更新的策略相關的,這個配置是 Ubuntu 的特權使用者名稱空間配置,簡單來說就是在 Ubuntu 24.04 版本的裡,現在限制非特權使用者名稱空間的使用,所以會影響系統上所有非特權且不受限制的程式,剛好基於 Chromium 的 Electron 應用都會受限,而 Dockertop 就是基於 Electron 的,所以也受了影響。

感興趣的同學,可以跳轉官方更新說明 非特權使用者名稱空間限制 檢視更多資訊。

相關文章