容器无法自动访问主机显示会话。GUI 客户端需要相应的显示套接字、环境变量和 凭据;暴露这些资源会赋予容器对用户会话的实质性控制权,因此只能对受信任的 镜像这样做。
X11 #
对于 X11,需要挂载主机套接字目录(通常为 /tmp/.X11-unix)并传入
DISPLAY。客户端还需要匹配的 Xauthority Cookie;通常的提供方式是挂载
一份作用域受到严格限制的 Cookie 文件,并设置 XAUTHORITY。不要使用 xhost +;
该命令会禁用显示服务的访问控制。X11Docker 可以在此配置基础上创建约束更严格的
封装环境。
Wayland #
Wayland 客户端连接到
$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY,通常是
/run/user/<uid>/wayland-0。容器必须以兼容的用户身份运行,并且只能接收
必需的运行时套接字和环境变量。许多桌面会话都提供 Xwayland,因此 X11 客户端
也可以采用 X11 方式。原生 Wayland 支持无需经过该兼容层,但这并不意味着可以
安全地与不受信任的代码共享套接字。
远程桌面 #
对于远程应用程序或流式传输的应用程序,VNC 通常能提供更合适的隔离边界: 服务器拥有独立桌面,客户端看到的是经过编码的像素,而不是主机上具有特权的 显示套接字。需要通过浏览器交付、录制或会话隔离时,VNC 也很有用。
评论
在 GitHub 上阅读或评论(发表评论需要登录)