Запуск OpenModelica GUI из Docker вызывает ошибку «Не удалось подключиться к любому дисплею X» - PullRequest
0 голосов
/ 15 апреля 2020

Вкл. Modelica Language Discord , кто-то отправил команды для запуска OpenModelica GUI (OMEdit) на Linux:

xhost +"local:docker@"
docker run -ti --rm --privileged --net=host -e "DISPLAY=$DISPLAY" -v /tmp/.X11-unix:/tmp/.X11-unix openmodelica/openmodelica:v1.14.1-gui OMEdit

и кто-то еще отправил приведенную ниже команду для macOS:

docker run -ti --rm --privileged --net=host -e DISPLAY=docker.for.mac.localhost:0 -v /tmp/.X11-unix:/tmp/.X11-unix openmodelica/openmodelica:v1.14.1-gui OMEdit

Я установил Docker с помощью HomeBrew, следуя инструкциям здесь

docker --version
Docker version 19.03.8, build afacb8b

но при попытке выполнить команду выше я получаю сообщение об ошибке:

QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
qt.qpa.screen: QXcbConnection: Could not connect to display docker.for.mac.localhost:0
Could not connect to any X display.

Вещи, которые я пытался решить:

  • из здесь установлен dbus brew install dbus
  • с здесь run xhost +local:docker возвращение

добавленных не сетевых локальных подключений в список контроля доступа

  • из здесь и здесь изменено DISPLAY=unix$DISPLAY, что приводит к немного другой ошибке

qt.qpa.screen: QXcbConnection: не удалось подключиться для отображения unix / private / tmp / com.apple.launchd.lO0ZFXT603 / org.macosforge.xquartz: 0

IP=$(ifconfig en0 | grep inet | awk '$1=="inet" {print $2}')
docker run .... -e DISPLAY=$(xhost + $(hostname) > /dev/null; echo $IP):0 ...

, что привело к

qt.qpa.screen: QXcbConnection: Не удалось подключиться к дисплею 10.0.0.9:0

  • с здесь , я пробовал open -a XQuartz, ... xhost + $ip и DISPLAY=$ip:0

Буду признателен, если вы сможете помогите мне узнать

  • Как мне решить вышеуказанные проблемы и получить для меня GUI running
  • с разбивкой по вышеуказанным командам. некоторые из них объяснены здесь , но не все остальные.

PS Я не хочу устанавливать Docker Рабочий стол, как обсуждалось здесь .

1 Ответ

0 голосов
/ 15 апреля 2020

ОК, думаю, я смог решить проблему. Я предполагаю, что XQuartz и socat установлены

brew cask install xquartz
brew install socat

, затем с здесь , запустите

socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\"

в одном терминале. Откройте новый терминал и запустите

docker-machine env default
eval $(docker-machine env default)
IP=$(ifconfig en0 | grep inet | awk '$1=="inet" {print $2}')
xhost + $IP
docker run -ti --rm --privileged --net=host -e DISPLAY=$IP:0 -v /tmp/.X11-unix:/tmp/.X11-unix openmodelica/openmodelica:v1.14.1-gui OMEdit

Но все же я был бы признателен, если бы кто-то мог объяснить, что делают эти команды, и есть ли более чистый и канонический способ сделать это.

...