Запустите приложение GUI на linux docker на linux сервере на windows хосте - PullRequest
0 голосов
/ 12 февраля 2020

Была построена следующая система (не мной):

Windows 10 установлена ​​операционная система на локальном компьютере. Подключение к удаленному серверу с Ubuntu 16.04 осуществляется через клиента (например, SmarTTY или Bitwise S SH Client). На сервере запускается контейнер docker.

Как настроить систему таким образом, чтобы приложение GUI можно было запускать из контейнера на удаленном сервере, чтобы я мог взаимодействовать с ним?

Я не совсем понимаю систему портов и значений DISPLAY.

С помощью smarTTY и его клиента vcxsrv я могу запустить это приложение вне контейнера, но не внутри - есть ошибки из-за отсутствия некоторых java файлы.

РЕДАКТИРОВАТЬ: Добавление отчетов и дополнительной информации У меня есть эта конфигурация команды запуска для docker:

docker run --rm --runtime=nvidia -it --name delobo \
-v /opt/pycharm-community-2019.1.3/:/opt/pycharm/  -v $(pwd):/workspace \
-v /media/:/media/ \
-v /home/boyko/.Xauthority:/home/boyko/.Xauthority \
-e XAUTHORITY=/home/boyko/.Xauthority \
-v /tmp/.X11-unix:/tmp/.X11-unix:rw --privileged \
-e DISPLAY=$DISPLAY -v $HOME/:/home/boyko \
--network=host tensorflow_me bash

и все это время, когда я пытался запустить GUI из PyCharm, я получаю что-то вроде этого:

Start Failed: Internal error. Please report to http://jb.gg/ide/critical-startup-errors

com.intellij.ide.plugins.PluginManager$StartupAbortedException: java.lang.reflect.InvocationTargetException
        at com.intellij.ide.plugins.PluginManager.lambda$start$0(PluginManager.java:78)
        at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.reflect.InvocationTargetException
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at com.intellij.ide.plugins.PluginManager.lambda$start$0(PluginManager.java:75)
        ... 1 more
Caused by: java.lang.UnsatisfiedLinkError: /opt/pycharm/jre64/lib/libawt_xawt.so: libXtst.so.6: cannot open shared object file: No such file or directory
        at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
        at java.base/java.lang.ClassLoader$NativeLibrary.load(Unknown Source)
        at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(Unknown Source)
        at java.base/java.lang.ClassLoader.loadLibrary0(Unknown Source)
        at java.base/java.lang.ClassLoader.loadLibrary(Unknown Source)
        at java.base/java.lang.Runtime.load0(Unknown Source)
        at java.base/java.lang.System.load(Unknown Source)
        at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
        at java.base/java.lang.ClassLoader$NativeLibrary.load(Unknown Source)
        at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(Unknown Source)
        at java.base/java.lang.ClassLoader.loadLibrary0(Unknown Source)
        at java.base/java.lang.ClassLoader.loadLibrary(Unknown Source)
        at java.base/java.lang.Runtime.loadLibrary0(Unknown Source)
        at java.base/java.lang.System.loadLibrary(Unknown Source)
        at java.desktop/java.awt.Toolkit$3.run(Unknown Source)
        at java.desktop/java.awt.Toolkit$3.run(Unknown Source)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at java.desktop/java.awt.Toolkit.loadLibraries(Unknown Source)
        at java.desktop/java.awt.Toolkit.<clinit>(Unknown Source)
        at com.intellij.ui.AppUIUtil.updateFrameClass(AppUIUtil.java:172)
        at com.intellij.idea.StartupUtil.prepareAndStart(StartupUtil.java:107)
        at com.intellij.idea.MainImpl.start(MainImpl.java:20)
        ... 6 more


Also, an UI exception occurred on attempt to show above message:
java.lang.NoClassDefFoundError: Could not initialize class java.awt.Toolkit
        at java.desktop/java.awt.Component.<clinit>(Unknown Source)
        at com.intellij.idea.Main.showMessage(Main.java:158)
        at com.intellij.idea.Main.showMessage(Main.java:134)
        at com.intellij.ide.plugins.PluginManager.processException(PluginManager.java:140)
        at com.intellij.ide.plugins.PluginManager$1.uncaughtException(PluginManager.java:63)
        at java.base/java.lang.Thread.dispatchUncaughtException(Unknown Source)

Я понятия не имею, как исправить эту проблему.

Должен отметить, что если мы используем Linux в качестве основного локального машина (вместо использования Windows, как я должен), ошибок нет, и PyCharm работает нормально.

1 Ответ

0 голосов
/ 18 февраля 2020

Получается так: мне нужно установить эти пакеты внутри моего контейнера под root:

apt-get install libxrender1 libxtst6 libxi6

Так что теперь у меня отображается pycharm, и он хорошо взаимодействует.

Основной совет был написан и описан там

...