从泊坞窗连接到X11服务器,而不xhost的,但与XAUTH

问题描述 投票:0回答:1

免责声明:这个问题已经被问在#2和其他场馆不同的形式,但我可以让没有工作。所以,我希望有人能帮助我想出解决办法一劳永逸。

我需要让我的码头工人集装箱X11转发工作,而无需使用xhost可言,因为安全问题。我想在/tmp/.X11-unix插座和~/.Xauthority暴露在多克尔容器,以便它可以用它们来连接到像一个客户端的X服务器。

我能我的问题归结为一个简单的Dockerfile。我有一个docker-compose.yml来运行Dockerfile

Dockerfile

FROM ubuntu:16.04
RUN apt-get update && apt-get install -y x11-apps xauth

docker-compose.yml

version: '2.3'
services:
  test:
    build: .
    command: /bin/bash
    environment:
      DISPLAY: $DISPLAY
    volumes:
      - /tmp/.X11-unix:/tmp/.X11-unix
      - ~/.Xauthority:/root/.Xauthority

这两个文件位于同一文件夹中。跑步:

# To build the container
$ docker-compose up --build
# To run it
$ docker-compose run test

# In the container run:
$ xclock

# See the xauth list
$ xauth list

如果您在主机系统中运行xhost +,认证会从X服务器被放弃和xclock程序将运行成功。否则,它会抱怨Error: Can't open display: :0。我想解决这个问题,而xhost,而仅仅通过建立通过暴露的插座和X认证成功连接到X服务器。任何有助于对?

操作系统:Ubuntu的16.04

泊坞窗版本:18.09.1,建立4c52b90

泊坞窗,撰写版本:1.23.2,构建1110ad01

docker docker-compose x11 x11-forwarding
1个回答
0
投票

我只是猜测。你可以使用

  • --network host
  • --env DISPLAY=127.0.0.1
  • --mount type=bind,source=/tmp/.X11-unix,target=/tmp/.X11-unix,readonly=true

这似乎是它的工作,但我还没有亲自尝试过。然而,你可能会决定你只是不想使用主机网络。

更新:我尝试过了,这是行不通的。我会离开这个答案最多的东西不起作用的例子。

© www.soinside.com 2019 - 2024. All rights reserved.