ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ : Этот вопрос задавался в разных формах на Stackoverflow и в других местах, но я не мог заставить никого работать.Поэтому я надеюсь, что кто-то может помочь мне понять это раз и навсегда.
Мне нужно включить работу пересылки x11 на моем контейнере Docker без использования xhost
из-за проблем безопасности.Я хочу открыть сокет /tmp/.X11-unix
и ~/.Xauthority
для контейнера Docker, чтобы он мог использовать их для подключения к 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
Версия Docker : 18.09.1, сборка 4c52b90
docker-compose версия: 1.23.2, сборка 1110ad01