zoukankan      html  css  js  c++  java
  • Using VNCserver + GUI application + Virtual Display in Docker container

    https://stackoverflow.com/questions/36221215/using-vncserver-gui-application-virtual-display-in-docker-container


    I would like to run firefox (or any graphical application) inside docker container.

    My requirement: When I start the container, I should be creating a virtual display, starting VNC server and then the GUI application. This means after the container is successfully started, I can connect to the GUI application running inside the container via VNC client. When I close the application, the container should automatically stop.

    Attempt 1:I started with the example here https://hub.docker.com/r/devopsil/vnc-firefox/~/dockerfile/In this example the developer starts the vnc server via CMD and keeps it running forever. He puts the firefox as part of .rc file so it starts when the container starts. If you connect via VNC client, you can see firefox and as expected closing firefox or disconnecting the VNC session does not stop the container.

    Attempt 2:I tuned the Dockerfile as follows. Changed only the last line (replaced CMD with ENTRYPOINT and removed the “forever” flag”)

    ENTRYPOINT ["/usr/bin/x11vnc", "-usepw", "-create"]
    

    Rebuilding and running the container “docker run --rm -p 5900 ” had a different behaviour now:container starts, connection via VNC client worked, firefox opened after a few seconds (wait after the message "extension RANDR missing on display :20") and the container stopped automatically after closing the vnc connection.

    Attempt 3:Then I created a bash script to start the vncserver and firefox and changed the Dockerfile to copy this script file inside the image and made the script as the entry point. But I got the error similar to “Display variable not set”

    #!/bin/bash
    /usr/bin/x11vnc -forever -usepw -create &
    firefox
    

    Attempt 4:So I passed the DISPLAY variable via the docker run command but then the error is cannot open display.

    Question: I don’t know how to like the virtual display created by the vncserver flag “-create” to the firefox. Please let me know what would be best way to start the GUI application when the container starts and automatically stop the container when the GUI application is closed. I believe the ENTRYPOINT in dockerfile should be set to firefox. Thanks for your help.

    I have seen this https://blog.jessfraz.com/post/docker-containers-on-the-desktop/ but this is of no use to me as I want to access the application remotely via VNC.

    ===================================================================

    Answer

    I managed to found the solution:

    Changed the script in Attempt 3 above as follows worked

    !/bin/bash
    
    Xvfb :1 -screen 0 800x600x16 &
    /usr/bin/x11vnc -display :1.0 -usepw &
    DISPLAY=:1.0
    export DISPLAY
    firefox
    

    Cheers.


    Maybe we can run /usr/bin/x11vnc -display :1.0 -usepw -forever &


  • 相关阅读:
    SQL SERVER 2008的元数据视图
    SQL Server 2008 中的 XML 功能
    SQL SERVER 2008的层次结构支持
    C#打包程序
    SQL SERVER 2008的top增强
    SQL SERVER导出数据字典
    SQL SERVER 2008的转置函数PIVOT
    SQL SERVER 2008的SQLCMD模式
    SQL SERVER 2008传递表值参数
    SQL Server 2005导出表中数据的SQL脚本形式(即INSERT语句)
  • 原文地址:https://www.cnblogs.com/ztguang/p/12644569.html
Copyright © 2011-2022 走看看