背景
系统环境: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 的,所以也受了影响。
感兴趣的同学,可以跳转官方更新说明 非特权用户命名空间限制 查看更多信息。
标签:24.04,Ubunto,Desktop,electron,apparmor,Ubuntu,Docker From: https://www.cnblogs.com/gonzo/p/18360498