如何在docker中运行qt gui?

如何在docker中运行qt gui?,docker,qt,qt5,alpine,Docker,Qt,Qt5,Alpine,我尝试了几种解决方案,但不可避免地遇到以下错误: $ QT_GRAPHICSSYSTEM="native" sudo docker run -it --privileged -e DISPLAY=$DISPLAY -e QT_GRAPHICSSYSTEM="native" -e QT_X11_NO_MITSHM=1 -v /dev:/dev -v /tmp/.X11-unix:/tmp/.X11-unix:rw qt-alpine QFactoryLoad

我尝试了几种解决方案,但不可避免地遇到以下错误:

$ QT_GRAPHICSSYSTEM="native" sudo docker run -it --privileged -e DISPLAY=$DISPLAY -e QT_GRAPHICSSYSTEM="native" -e QT_X11_NO_MITSHM=1 -v /dev:/dev -v /tmp/.X11-unix:/tmp/.X11-unix:rw qt-alpine
QFactoryLoader::QFactoryLoader() checking directory path "/usr/lib/qt5/plugins/platforms" ...
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5/plugins/platforms/libqeglfs.so"
Found metadata in lib /usr/lib/qt5/plugins/platforms/libqeglfs.so, metadata=
{
    "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
    "MetaData": {
        "Keys": [
            "eglfs"
        ]
    },
    "archreq": 0,
    "className": "QEglFSIntegrationPlugin",
    "debug": false,
    "version": 331264
}


Got keys from plugin meta data ("eglfs")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5/plugins/platforms/libqlinuxfb.so"
Found metadata in lib /usr/lib/qt5/plugins/platforms/libqlinuxfb.so, metadata=
{
    "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
    "MetaData": {
        "Keys": [
            "linuxfb"
        ]
    },
    "archreq": 0,
    "className": "QLinuxFbIntegrationPlugin",
    "debug": false,
    "version": 331264
}


Got keys from plugin meta data ("linuxfb")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5/plugins/platforms/libqminimal.so"
Found metadata in lib /usr/lib/qt5/plugins/platforms/libqminimal.so, metadata=
{
    "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
    "MetaData": {
        "Keys": [
            "minimal"
        ]
    },
    "archreq": 0,
    "className": "QMinimalIntegrationPlugin",
    "debug": false,
    "version": 331264
}


Got keys from plugin meta data ("minimal")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5/plugins/platforms/libqminimalegl.so"
Found metadata in lib /usr/lib/qt5/plugins/platforms/libqminimalegl.so, metadata=
{
    "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
    "MetaData": {
        "Keys": [
            "minimalegl"
        ]
    },
    "archreq": 0,
    "className": "QMinimalEglIntegrationPlugin",
    "debug": false,
    "version": 331264
}


Got keys from plugin meta data ("minimalegl")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5/plugins/platforms/libqoffscreen.so"
Found metadata in lib /usr/lib/qt5/plugins/platforms/libqoffscreen.so, metadata=
{
    "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
    "MetaData": {
        "Keys": [
            "offscreen"
        ]
    },
    "archreq": 0,
    "className": "QOffscreenIntegrationPlugin",
    "debug": false,
    "version": 331264
}


Got keys from plugin meta data ("offscreen")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5/plugins/platforms/libqvnc.so"
Found metadata in lib /usr/lib/qt5/plugins/platforms/libqvnc.so, metadata=
{
    "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
    "MetaData": {
        "Keys": [
            "vnc"
        ]
    },
    "archreq": 0,
    "className": "QVncIntegrationPlugin",
    "debug": false,
    "version": 331264
}


Got keys from plugin meta data ("vnc")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5/plugins/platforms/libqxcb.so"
Found metadata in lib /usr/lib/qt5/plugins/platforms/libqxcb.so, metadata=
{
    "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
    "MetaData": {
        "Keys": [
            "xcb"
        ]
    },
    "archreq": 0,
    "className": "QXcbIntegrationPlugin",
    "debug": false,
    "version": 331264
}


Got keys from plugin meta data ("xcb")
QFactoryLoader::QFactoryLoader() checking directory path "/app/simple-qml/platforms" ...
loaded library "/usr/lib/qt5/plugins/platforms/libqxcb.so"
No protocol specified
qt.qpa.xcb: could not connect to display :1
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.
主机系统:Ubuntu20.04和nvidia

Dockerfile

FROM alpine:latest

RUN apk update && apk add --no-cache qt5-qtbase-dev qt5-qttools qt5-qt3d-dev g++ cmake make

WORKDIR /app

COPY . .

RUN qmake-qt5 && make

CMD ["sh", "-c", "QT_DEBUG_PLUGINS=1 QT_GRAPHICSSYSTEM=native /app/simple-qml/simple-qml"]


我只是想利用
qt5.15
3detras
等功能。在
qml
中提供支持。因此,这些文件只是目录中
qt3d5 examples
中的示例。所以实际上,这些文件并不重要,我只是在尝试建立运行
qt
-
opengl
-app in
docker

在您的host@eyllanesc哇!取得了一些进展!但是我有以下错误:``Qt3D.Renderer.Backend:bool Qt3DRender::Render::GraphicsContext::makeCurrent(QSurface*)makeCurrent未能将上下文设置为当前上下文:OpenGL资源不会被销毁``请在host@eyllanesc哇!取得了一些进展!但是我有以下错误:``Qt3D.Renderer.Backend:bool Qt3DRender::Render::GraphicsContext::makeCurrent(QSurface*)makeCurrent未能将上下文设置为当前上下文:OpenGL资源将不会被销毁```