2

Я пытался докеризировать приложение xeyes только для проверки. Я знаю, что есть и другие способы запуска в Raspberry Pi, но мне нужно было автономное изображение, которое не зависит от X11 машины. Мне пришлось использовать xvfb, чтобы избавиться от множества ошибок. Сам VNC запускается и я могу подключиться, но экран черный.

Он основан на этом ответе https://stackoverflow.com/a/16311264/6655884

Вот мой Dockerfile:

FROM resin/rpi-raspbian:latest

RUN apt-get update && apt-get install -y arduino x11vnc xvfb x11-apps

RUN mkdir ~/.vnc && x11vnc -storepasswd 1234 ~/.vnc/passwd

ENV DISPLAY :1

CMD /usr/bin/Xvfb :1 -screen 0 1366x768x16 & x11vnc -display :1 -forever -usepw -create & sleep 20 && xeyes

Мне пришлось добавить 20 секунд сна, чтобы VNC запустился перед xeyes , иначе файл docker останавливается с ошибкой из-за невозможности подключиться к дисплею 1.

Вот вывод:

23/04/2018 02:32:35 -usepw: found /root/.vnc/passwd
23/04/2018 02:32:35 x11vnc version: 0.9.13 lastmod: 2011-08-10  pid: 12
23/04/2018 02:32:35 
23/04/2018 02:32:35 wait_for_client: WAIT:cmd=FINDCREATEDISPLAY-Xvfb
23/04/2018 02:32:35 
23/04/2018 02:32:35 initialize_screen: fb_depth/fb_bpp/fb_Bpl 24/32/2560
23/04/2018 02:32:35 
23/04/2018 02:32:35 Autoprobing TCP port 
23/04/2018 02:32:35 Autoprobing selected TCP port 5900
23/04/2018 02:32:35 Autoprobing TCP6 port 
23/04/2018 02:32:35 Autoprobing selected TCP6 port 5900
23/04/2018 02:32:35 listen6: bind: Address already in use
23/04/2018 02:32:35 Not listening on IPv6 interface.
23/04/2018 02:32:35 

The VNC desktop is:      a385d9fbfff3:0
23/04/2018 02:33:35 Got connection from client 172.17.0.1
23/04/2018 02:33:35   other clients:
23/04/2018 02:33:35 Normal socket connection
23/04/2018 02:33:35 incr accepted_client=1 for 172.17.0.1:37900  sock=6
23/04/2018 02:33:35 wait_for_client: got client
23/04/2018 02:33:35 Client Protocol Version 3.8
23/04/2018 02:33:35 Protocol version sent 3.8, using 3.8
23/04/2018 02:33:35 client progressed=1 in 4/0 0.034084 s
23/04/2018 02:33:35 client useCopyRect: 172.17.0.1 0
23/04/2018 02:33:35 client_set_net: 172.17.0.1  0.1560
23/04/2018 02:33:35 wait_for_client: running: env X11VNC_SKIP_DISPLAY=''  /bin/sh /tmp/x11vnc-find_display.DnAxqk
/tmp/x11vnc-find_display.DnAxqk: 1: /tmp/x11vnc-find_display.DnAxqk: netstat: not found
/tmp/x11vnc-find_display.DnAxqk: 1: /tmp/x11vnc-find_display.DnAxqk: xauth: not found
23/04/2018 02:33:36 wait_for_client: find display cmd failed.
23/04/2018 02:33:37 wait_for_client: FINDCREATEDISPLAY cmd: /bin/sh /tmp/x11vnc-find_display.DnAxqk Xvfb
trying N=20 ...
redir_daemon=
/tmp/x11vnc-find_display.DnAxqk: 461: /tmp/x11vnc-find_display.DnAxqk: /tmp/x11vnc-find_display.DnAxqk: 461: /tmp/x11vnc-find_display.DnAxqk: nmerge: not found
-f: not found
/tmp/x11vnc-find_display.DnAxqk: 462: /tmp/x11vnc-find_display.DnAxqk: nmerge: not found
/tmp/x11vnc-find_display.DnAxqk: 462: /tmp/x11vnc-find_display.DnAxqk: -f: not found
/usr/bin/Xvfb :20 -screen 0 1280x1024x24 -cc 4 -nolisten tcp -auth  
use: X [:<display>] [option]
-a #                   default pointer acceleration (factor)
-ac                    disable access control restrictions
-audit int             set audit trail level
-auth file             select authorization file
-br                    create root window with black background
+bs                    enable any backing store support
-bs                    disable any backing store support
-c                     turns off key-click
c #                    key-click volume (0-100)
-cc int                default color visual class
-nocursor              disable the cursor
-core                  generate core dump on fatal error
-displayfd fd          file descriptor to write display number to when ready to connect
-dpi int               screen resolution in dots per inch
-dpms                  disables VESA DPMS monitor control
-deferglyphs [none|all|16] defer loading of [no|all|16-bit] glyphs
-f #                   bell base (0-100)
-fc string             cursor font
-fn string             default font name
-fp string             default font path
-help                  prints message with these options
+iglx                  Allow creating indirect GLX contexts
-iglx                  Prohibit creating indirect GLX contexts (default)
-I                     ignore all remaining arguments
-ld int                limit data space to N Kb
-lf int                limit number of open files to N
-ls int                limit stack space to N Kb
-nolock                disable the locking mechanism
-maxclients n          set maximum number of clients (power of two)
-nolisten string       don't listen on protocol
-listen string         listen on protocol
-noreset               don't reset after last client exists
-background [none]     create root window with no background
-reset                 reset after last client exists
-p #                   screen-saver pattern duration (minutes)
-pn                    accept failure to listen on all ports
-nopn                  reject failure to listen on all ports
-r                     turns off auto-repeat
r                      turns on auto-repeat 
-render [default|mono|gray|color] set render color alloc policy
-retro                 start with classic stipple and cursor
-s #                   screen-saver timeout (minutes)
-seat string           seat to run on
-t #                   default pointer threshold (pixels/t)
-terminate             terminate at server reset
-to #                  connection time out
-tst                   disable testing extensions
ttyxx                  server started from init on /dev/ttyxx
v                      video blanking for screen-saver
-v                     screen-saver without video blanking
-wm                    WhenMapped default backing-store
-wr                    create root window with white background
-maxbigreqsize         set maximal bigrequest size 
+xinerama              Enable XINERAMA extension
-xinerama              Disable XINERAMA extension
-dumbSched             Disable smart scheduling, enable old behavior
-schedInterval int     Set scheduler interval in msec
-sigstop               Enable SIGSTOP based startup
+extension name        Enable extension
-extension name        Disable extension
-query host-name       contact named host for XDMCP
-broadcast             broadcast for XDMCP
-multicast [addr [hops]] IPv6 multicast for XDMCP
-indirect host-name    contact named host for indirect XDMCP
-port port-num         UDP port number to send messages to
-from local-address    specify the local address to connect from
-once                  Terminate server after one session
-class display-class   specify display class to send in manage
-cookie xdm-auth-bits  specify the magic cookie for XDMCP
-displayID display-id  manufacturer display ID for request
[+-]accessx [ timeout [ timeout_mask [ feedback [ options_mask] ] ] ]
                       enable/disable accessx key sequences
-ardelay               set XKB autorepeat delay
-arinterval            set XKB autorepeat interval
-screen scrn WxHxD     set screen's width, height, depth
-pixdepths list-of-int support given pixmap depths
+/-render          turn on/off RENDER extension support(default on)
-linebias n            adjust thin line pixelization
-blackpixel n          pixel value for black
-whitepixel n          pixel value for white
-fbdir directory       put framebuffers in mmap'ed files in directory
-shmem                 put framebuffers in shared memory
/usr/bin/nohup: failed to run command ‘.xinitrc’: No such file or directory
/tmp/x11vnc-find_display.DnAxqk: 981: /tmp/x11vnc-find_display.DnAxqk: -f: not found
23/04/2018 02:33:44 Using X display :20
23/04/2018 02:33:44 rootwin: 0x43 reswin: 0x200001 dpy: 0x13c58b8
23/04/2018 02:33:44 
23/04/2018 02:33:44 ------------------ USEFUL INFORMATION ------------------
23/04/2018 02:33:44 X DAMAGE available on display, using it for polling hints.
23/04/2018 02:33:44   To disable this behavior use: '-noxdamage'
23/04/2018 02:33:44 
23/04/2018 02:33:44   Most compositing window managers like 'compiz' or 'beryl'
23/04/2018 02:33:44   cause X DAMAGE to fail, and so you may not see any screen
23/04/2018 02:33:44   updates via VNC.  Either disable 'compiz' (recommended) or
23/04/2018 02:33:44   supply the x11vnc '-noxdamage' command line option.
23/04/2018 02:33:44 
23/04/2018 02:33:44 Wireframing: -wireframe mode is in effect for window moves.
23/04/2018 02:33:44   If this yields undesired behavior (poor response, painting
23/04/2018 02:33:44   errors, etc) it may be disabled:
23/04/2018 02:33:44    - use '-nowf' to disable wireframing completely.
23/04/2018 02:33:44    - use '-nowcr' to disable the Copy Rectangle after the
23/04/2018 02:33:44      moved window is released in the new position.
23/04/2018 02:33:44   Also see the -help entry for tuning parameters.
23/04/2018 02:33:44   You can press 3 Alt_L's (Left "Alt" key) in a row to 
23/04/2018 02:33:44   repaint the screen, also see the -fixscreen option for
23/04/2018 02:33:44   periodic repaints.
23/04/2018 02:33:44 
23/04/2018 02:33:44 XFIXES available on display, resetting cursor mode
23/04/2018 02:33:44   to: '-cursor most'.
23/04/2018 02:33:44   to disable this behavior use: '-cursor arrow'
23/04/2018 02:33:44   or '-noxfixes'.
23/04/2018 02:33:44 using XFIXES for cursor drawing.
23/04/2018 02:33:44 GrabServer control via XTEST.
23/04/2018 02:33:44 
23/04/2018 02:33:44 Scroll Detection: -scrollcopyrect mode is in effect to
23/04/2018 02:33:44   use RECORD extension to try to detect scrolling windows
23/04/2018 02:33:44   (induced by either user keystroke or mouse input).
23/04/2018 02:33:44   If this yields undesired behavior (poor response, painting
23/04/2018 02:33:44   errors, etc) it may be disabled via: '-noscr'
23/04/2018 02:33:44   Also see the -help entry for tuning parameters.
23/04/2018 02:33:44   You can press 3 Alt_L's (Left "Alt" key) in a row to 
23/04/2018 02:33:44   repaint the screen, also see the -fixscreen option for
23/04/2018 02:33:44   periodic repaints.
23/04/2018 02:33:44 
23/04/2018 02:33:44 XKEYBOARD: number of keysyms per keycode 7 is greater
23/04/2018 02:33:44   than 4 and 51 keysyms are mapped above 4.
23/04/2018 02:33:44   Automatically switching to -xkb mode.
23/04/2018 02:33:44   If this makes the key mapping worse you can
23/04/2018 02:33:44   disable it with the "-noxkb" option.
23/04/2018 02:33:44   Also, remember "-remap DEAD" for accenting characters.
23/04/2018 02:33:44 
23/04/2018 02:33:44 X FBPM extension not supported.
23/04/2018 02:33:44 X display is not capable of DPMS.
23/04/2018 02:33:44 --------------------------------------------------------
23/04/2018 02:33:44 
23/04/2018 02:33:44 Default visual ID: 0x21
23/04/2018 02:33:44 Read initial data from X display into framebuffer.
23/04/2018 02:33:44 initialize_screen: fb_depth/fb_bpp/fb_Bpl 24/32/5120
23/04/2018 02:33:44 rfbNewFramebuffer(0x13b66c0, 0x0, 1280, 1024, 8, 1, 4)
23/04/2018 02:33:44 Pixel format for client 172.17.0.1:
23/04/2018 02:33:44   32 bpp, depth 24, little endian
23/04/2018 02:33:44   true colour: max r 255 g 255 b 255, shift r 16 g 8 b 0
23/04/2018 02:33:44 
23/04/2018 02:33:44 X display :20 is 32bpp depth=24 true color
23/04/2018 02:33:44 
23/04/2018 02:33:44 calling setTranslateFunction()...
23/04/2018 02:33:44 Pixel format for client 172.17.0.1:
23/04/2018 02:33:44   32 bpp, depth 24, little endian
23/04/2018 02:33:44   true colour: max r 255 g 255 b 255, shift r 16 g 8 b 0
23/04/2018 02:33:44 no translation needed
23/04/2018 02:33:44   done.
23/04/2018 02:33:44 TS_REDIR is empty, restarting...
23/04/2018 02:33:44 
23/04/2018 02:33:44 Xinerama is present and active (e.g. multi-head).
23/04/2018 02:33:44 Xinerama: number of sub-screens: 1
23/04/2018 02:33:44 Xinerama: no blackouts needed (only one sub-screen)
23/04/2018 02:33:44 
23/04/2018 02:33:44 fb read rate: 59 MB/sec
23/04/2018 02:33:44 The X server says there are 10 mouse buttons.
23/04/2018 02:33:44 screen setup finished.
23/04/2018 02:33:44 

The VNC desktop is:      a385d9fbfff3:0

******************************************************************************
Have you tried the x11vnc '-ncache' VNC client-side pixel caching feature yet?

The scheme stores pixel data offscreen on the VNC viewer side for faster
retrieval.  It should work with any VNC viewer.  Try it by running:

    x11vnc -ncache 10 ...

One can also add -ncache_cr for smooth 'copyrect' window motion.
More info: http://www.karlrunge.com/x11vnc/faq.html#faq-client-caching

23/04/2018 02:33:44 rfbProcessClientSecurityType: executing handler for type 2
23/04/2018 02:33:44 Battling with something for -norepeat!! (1 resets left)
23/04/2018 02:33:44 Disabled X server key autorepeat.
23/04/2018 02:33:44   to force back on run: 'xset r on' (2 times)
23/04/2018 02:33:44 created   xdamage object: 0x20002c
23/04/2018 02:33:51 cutbuffer_send: no send: uninitialized clients
23/04/2018 02:34:25 client useCopyRect: 172.17.0.1 0
23/04/2018 02:34:25 Pixel format for client 172.17.0.1:
23/04/2018 02:34:25   8 bpp, depth 8
23/04/2018 02:34:25   true colour: max r 7 g 7 b 3, shift r 0 g 3 b 6
23/04/2018 02:34:25 rfbProcessClientNormalMessage: ignoring unsupported encoding type ultraZip
23/04/2018 02:34:25 Using compression level 9 for client 172.17.0.1
23/04/2018 02:34:25 Using image quality level 0 for client 172.17.0.1
23/04/2018 02:34:25 Using JPEG subsampling 1, Q15 for client 172.17.0.1
23/04/2018 02:34:25 Enabling X-style cursor updates for client 172.17.0.1
23/04/2018 02:34:25 Enabling full-color cursor updates for client 172.17.0.1
23/04/2018 02:34:25 Enabling cursor position updates for client 172.17.0.1
23/04/2018 02:34:25 Enabling KeyboardLedState protocol extension for client 172.17.0.1
23/04/2018 02:34:25 Enabling NewFBSize protocol extension for client 172.17.0.1
23/04/2018 02:34:25 Enabling LastRect protocol extension for client 172.17.0.1
23/04/2018 02:34:25 Enabling SupportedMessages protocol extension for client 172.17.0.1
23/04/2018 02:34:25 Enabling SupportedEncodings protocol extension for client 172.17.0.1
23/04/2018 02:34:25 Enabling ServerIdentity protocol extension for client 172.17.0.1
23/04/2018 02:34:25 Enabling Xvp protocol extension for client 172.17.0.1
23/04/2018 02:34:25 Using tight encoding for client 172.17.0.1
23/04/2018 02:34:30 created selwin: 0x20002d
23/04/2018 02:34:30 called initialize_xfixes()

0