相关疑难解决方法(0)

让JavaFX 11应用程序在Docker上工作

我正在尝试让一个可以在我的机器上完美运行的应用程序在docker上运行,这是我的docker文件:

FROM openjdk:11-jre-slim
VOLUME /tmp
ADD someJar.jar someJar.jar
ADD lib lib
ADD config.properties config.properties
ENTRYPOINT ["java", "-javaagent:lib/aspectjweaver-1.9.2.jar", 
    "-javaagent:lib/spring-instrument-5.1.6.RELEASE.jar", "--module-path", 
    "lib/javafx-sdk-11.0.2", "--add-modules=javafx.controls", "- 
    Dprism.verbose=true", "-jar","someJar.jar"]
Run Code Online (Sandbox Code Playgroud)

我还尝试将其基于高山openjdk11版本,其结果相同:

FROM adoptopenjdk/openjdk11:alpine
VOLUME /tmp
RUN apk update && apk add libx11 mesa-gl gtk+3.0 && apk update
ADD someJar.jar someJar.jar
ADD lib lib
ADD config.properties config.properties
ENTRYPOINT ["java", "-javaagent:lib/aspectjweaver-1.9.2.jar", "-javaagent:lib/spring-instrument-5.1.6.RELEASE.jar", "--module-path", "lib", "--add-modules=javafx.controls", "-Dprism.verbose=true", "-jar","someJar.jar"]
Run Code Online (Sandbox Code Playgroud)

The lib folder contains the linux flavor of the openJFX runtime (.so files and .jar files). I am developing this on …

java javafx docker openjfx java-11

15
推荐指数
1
解决办法
587
查看次数

在 Docker 容器中运行 Qt GUI

因此,我有一个基于 Qt5 的 C++ GUI,我想从 Docker 容器内运行它。

当我尝试开始时

docker run --rm -it my_image
Run Code Online (Sandbox Code Playgroud)

这会导致错误输出

qt.qpa.xcb: could not connect to display localhost:10.0
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.
Run Code Online (Sandbox Code Playgroud)

所以我寻找如何做到这一点。我在 docker 容器中找到了 GUI Qt 应用程序,并基于此调用它

QT_GRAPHICSSYSTEM="native" docker run -it …
Run Code Online (Sandbox Code Playgroud)

c++ qt docker

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

在Docker容器中转发GUI应用程序的X11

我目前正在尝试在docker容器中运行一些GUI应用程序.我一直在github尝试jessie frazelle的那些.但是,我可以构建图像(或从docker hub获取)并运行它们没有任何可见的错误但是,窗口不显示(我无法看到应用程序).

我在Ubuntu 16.04上运行Docker版本1.13.1

图像来自:

FROM debian:stretch
MAINTAINER Jessie Frazelle <jess@linux.com>

RUN apt-get update && apt-get install -y \
    libreoffice \
    --no-install-recommends \
    && rm -rf /var/lib/apt/lists/*

ENTRYPOINT [ "libreoffice" ]
Run Code Online (Sandbox Code Playgroud)

我正在使用的运行命令如下:

docker run -d \
    -v /tmp/.X11-unix:/tmp/.X11-unix \
    -v /etc/localtime:/etc/localtime \
    -e DISPLAY=unix$DISPLAY 
    -v $HOME/Documents:/root/Documents \
    -e GDK_SCALE \
    -e GDK_DPI_SCALE \
    --name libreoffice \
    jess/libreoffice
Run Code Online (Sandbox Code Playgroud)

在搜索了很多来源之后,我可以看到上面的内容应该可行,并且大多数人都说在运行命令中需要以下几行,

    -v /tmp/.X11-unix:/tmp/.X11-unix
    -e DISPLAY=unix$DISPLAY
Run Code Online (Sandbox Code Playgroud)

但我仍然无法显示窗口.

  1. 我怎样才能让它发挥作用?
  2. 我从根本上缺少什么?

任何帮助,将不胜感激.

linux containers x11-forwarding docker dockerfile

8
推荐指数
1
解决办法
6689
查看次数

Docker 无法连接到 X 服务器

我为 opencv 和面部识别创建了一个 docker 图像以简化设置过程。

但是recognize.py 脚本需要X Server 来显示图像结果。这是我到目前为止所做的:

sudo docker run -t -d --name opencv opencv:latest
sudo docker exec -it opencv bash /extract-embeddings.sh
sudo docker exec -it opencv bash /train-model.sh
Run Code Online (Sandbox Code Playgroud)

到目前为止一切都很好。最后一步是在图像中显示结果的实际比较。

sudo docker exec -it opencv bash /face-recognition.sh
Run Code Online (Sandbox Code Playgroud)

它给出了输出:

[INFO] loading face detector...
[INFO] loading face recognizer...
No protocol specified
: cannot connect to X server :0
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下命令运行容器:

sudo docker run -t -d --name opencv -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix opencv:latest
Run Code Online (Sandbox Code Playgroud)

但它没有帮助。

xserver docker

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

在 docker 容器中运行 x-org 时键盘/鼠标不响应

我想为 GUI 应用程序(例如 Chrome)创建一个 docker 映像,并且希望这个 GUI 应用程序可以在没有安装 X 服务器的裸 Linux 服务器上运行。

我知道为 X Window 客户端(GUI 应用程序本身)创建和运行 docker 映像非常容易。这需要在主机上安装并运行 X 服务器。

sudo docker run -ti -v /tmp/.X11-unix:/tmp/.X11-unix xorg xterm -display :0
Run Code Online (Sandbox Code Playgroud)

但对我来说,我需要 X 客户端和服务器都在 docker 容器中运行。

这是我的 dockerfile:

FROM ubuntu:14.04
RUN apt-get update && apt-get install -y xorg
Run Code Online (Sandbox Code Playgroud)

我通过命令运行图像:

sudo docker run -i -t --rm -e DISPLAY=:0 --privileged xorg xinit
Run Code Online (Sandbox Code Playgroud)

X 服务器可以启动,屏幕变黑,几秒钟后,xterm 窗口显示。但是,我无法使用键盘和鼠标。屏幕似乎冻结了

我搜索并尝试了很多解决方案,但没有人能解决这个问题。(我不需要虚拟x服务器)

x11 user-interface docker

6
推荐指数
1
解决办法
4638
查看次数

如何从我的本地浏览器观看远程服务器上的docker内部的xvfb会话?

我正在运行一个docker(我自己构建),这是一个运行E2E测试的docker.浏览器已启动并运行但我希望有另一个很好的功能,我希望能够在线观看会话.

我的docker run命令是:

docker run -p 4444:4444 --name ${DOCKER_TAG_NAME} 
           -e Some_ENVs 
           -v Volume:Volume 
           --privileged 
           -d "{docker-registry}" >> /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)

我能够导出截图,但在某些情况下,它还不够,观察测试的确切状态的能力将是惊人的.我尝试了很多选择,但我走到了尽头,任何帮助都会很棒.

  • 我的测试是在 Python 2.7
  • 我的Docker基础是 ubuntu:14.04
  • 我的环境在AWS中(如果那样)
  • docker在Ubuntu服务器上运行.

  • 我知道它的复制,但没有人回答他,所以......

python selenium xvfb selenium-chromedriver docker

6
推荐指数
1
解决办法
1108
查看次数

构建一个完整的 Ubuntu 桌面 docker 镜像

我想构建一个完整版的 Ubuntu 14 桌面作为gui 应用程序的基础映像,我知道如何通过 debootstrap 在 Ubuntu 桌面版本上构建,如https://docs.docker.com/articles/baseimages/ 中所述,但这是一个最小的Linux版本,一些GUI应用程序无法完美运行,因为缺少一些基本组件,例如字体系列,所以我想要完全控制基本图像,谢谢!

ubuntu user-interface image docker

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

Docker 中的 Python Tkinter .TclError:无法连接到显示

我是 python 新手,正在尝试构建一个小应用程序。它需要是一个 GUI 应用程序,我想用 docker 将它容器化。我收到以下错误,找不到解决方案

No protocol specified
No protocol specified
Traceback (most recent call last):
  File "tkinker.py", line 7, in <module>
    tinker = Tk()
  File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1818, in __init__
    self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: couldn't connect to display ":0.0"
Run Code Online (Sandbox Code Playgroud)

它在本地启动,但不会在 docker 中启动。我的操作系统是 Xubuntu。

我创建了一个示例应用程序(如下),请参阅 run-test.sh https://github.com/jeremysells/test/tree/master/docker-tkinter

python ubuntu tkinter xfce docker

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

Docker运行桌面环境

问题最明确,即
如何在Docker 远程容器中启动完整的桌面环境(KDE,XFCE,Gnome无关紧要)。

我是挖在互联网上,还有 许多关于相关主题的问题,但不一样的,他们所有关于如何运行GUI 应用程序不完整的桌面。

我发现:

  • 必要运行Xvfb
  • 以某种方式在该FrameBuffer中运行Xfce
  • 允许x11vnc共享正在运行的X环境

但实际上我一直在这里,总是遇到任何错误:

... (EE) Invalid screen configuration 1024x768 for -screen 0
... Cannot open /dev/tty0 (No such file or directory)
Run Code Online (Sandbox Code Playgroud)

您能否给出一些Dockerfile行以达到目标?

vnc xvfb docker

5
推荐指数
1
解决办法
4913
查看次数

将 VNC 与 Docker 结合使用

这是我第一次使用 VNC 和 docker。我想连接到我的 docker 的 GUI。

我尝试按照一些在线教程进行操作,但我的 VNC 查看器无法连接到显示器。我在我的 dockerfile 中公开了端口 5900,并且在 docker 内部我运行了 Xvbf :1 -screen 0 1600x1200x16 & export DISPLAY=:1x11vnc. 它似乎有效,我收到消息说桌面位于端口 5900。但是我仍然无法在 vnc 查看器中连接到 localhost:5900。

我做错了什么,我可以用什么来诊断我的问题?谢谢!

vnc docker

5
推荐指数
0
解决办法
2万
查看次数

在 Windows 10 上的 Docker 容器中运行 X-Windows 桌面应用程序

我想在我的 Windows 10 机器(i5、8GB、240 GB ssd、2&1 笔记本)中有一个 Linux 开发环境(Java、Intellij Idea、Clojure 和 ClojureScript)。我可以用:

  1. Linux VM(使用 Hyper-V、VMware Player 或 Virtual Box),或
  2. 运行桌面应用程序的 docker 容器。

我想尝试第二种选择。在桌面上的 Docker Containers 中,作者使用以下命令运行 C​​hrome 浏览器 docker:

$ docker run -it \
--net host \ # may as well YOLO
--cpuset-cpus 0 \ # control the cpu
--memory 512mb \ # max memory it can use
-v /tmp/.X11-unix:/tmp/.X11-unix \ # mount the X11 socket
-e DISPLAY=unix$DISPLAY \ # pass the display
-v $HOME/Downloads:/root/Downloads \ # optional, …
Run Code Online (Sandbox Code Playgroud)

linux hyper-v virtual-machine docker windows-10

4
推荐指数
2
解决办法
6274
查看次数

如何使用 vnc 在 ubuntu 中运行 docker 镜像?

为了检查在 docker 镜像中运行的 selenium 测试,我尝试设置一个 VNC 来验证测试期间发生的情况。

我正在按照此处提出的建议创建一个新的 docker 映像,并在 中添加以下附加行Dockerfile

RUN     apt-get install -y x11vnc 
RUN     mkdir ~/.vnc
RUN     x11vnc -storepasswd 1234 ~/.vnc/passwd
Run Code Online (Sandbox Code Playgroud)

然后我使用以下命令启动了 docker 镜像:

docker run -p 5900 --rm -it --entrypoint /bin/bash selenium-tests
Run Code Online (Sandbox Code Playgroud)

并开始krdc作为我的 VNC 查看器。那么现在怎么办?

我在krdc. 也许我错过了什么?我是否必须在 docker 中明确启动 vnc 代码?我需要向docker命令传递额外的参数吗?

  • 码头工人:1.13.1
  • Ubuntu:16.4.03
  • krdc:4.14.16

ubuntu vnc docker

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

将xserver添加到Docker容器中(主机是无头的)

我正在构建一个具有 Maven 和一些依赖项的 Docker 容器。然后它在容器内执行脚本。看起来,其中一个依赖项需要 Xserver 才能工作。屏幕上没有显示任何内容,但这似乎是必要且无法避免的。

我让它工作了,ENV DISPLAY=x.x.x.x:0在 Dockerfile 上放置了一个,它连接到外部 Xserver 并且它工作了。但重点是让 Docker 成为一个自给自足的容器。

因此,我需要将 Xserver 添加到我的容器中,并在 Dockerfile 中添加必要的内容。我希望 Xserver 只能由 Docker 容器本身访问,而不能从外部访问。

FROM我的 Dockerfile 的 是不可FROM ubuntu:15.04更改的,因为我的 Dockerfile 有很多内容取决于该特定版本。

我读过一些关于如何从 docker 容器连接到 Docker 主机的 Xserver 的文章,如下所示。但正如我提出问题的标题一样,Docker 主机是无头的,并且没有 Xserver。

  • apt-get要安装到容器中才能拥有 Xserver,最少需要安装哪些软件包?
  • 我想在我的 Dockerfile 中将需要显示环境变量,例如ENV DISPLAY=:0. 它是否正确?
  • 命令中还需要添加什么吗docker run

谢谢。

containers headless xserver docker

3
推荐指数
1
解决办法
5171
查看次数