Ubunto 24.04 下 Docker Desktop 打开无反应问题解决和原因

背景

系统环境: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 的,所以也受了影响。

感兴趣的同学,可以跳转官方更新说明 非特权用户命名空间限制 查看更多信息。

posted @ 2024-08-15 11:07  卡卡一点都不卡  阅读(1324)  评论(0)    收藏  举报