小编M-P*_*xel的帖子

通过 SSH 连接将 X11 转发到容器的主机?

我想从远程机器运行一个容器化的 GUI 应用程序。

我不想通过向容器添加 ssh 主机来解决这个问题,因为

  • 我已经可以通过 SSH 访问主机了
  • 它增加了不必要的开销
  • 它使容器在远程和本地使用之间不可移植

我已经可以在主机上成功运行 GUI 应用程序,但不能从容器内运行。这些是我迄今为止采取的步骤:

主持人

  • xauth + (不是长期的,但有助于消除可能的问题)
  • docker-user主机上的 uid 501000 ==docker-user容器中的 uid 1000 通过命名空间功能
  • .Xauthority文件复制到docker-user主文件夹

文件

  • 基于高山
  • 安装,xauth并且为了测试目的,xterm
  • docker-user使用适当的 uid/gid创建

docker-compose

  • DISPLAY转发的环境变量
  • /home/docker-user/:/home/docker-user/:ro提供.Xauthority的cookie
  • /tmp/.X11-unix:/tmp/.X11-unix:ro提供X11插槽接入
  • 运行命令 su - docker-user -c "export DISPLAY=$DISPLAY && xterm"
    • su 曾经作为 docker-user
    • DISPLAY转发到su上下文中

不幸的是,这还不够。虽然主机操作系统上的 xterm 连接到我的本地 X 服务器没有问题,但容器中的 xterm 显示Xt error: Can't open display: …

x11-forwarding docker alpine-linux

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

alpine-linux ×1

docker ×1

x11-forwarding ×1