Skip to content

Display connection problems with bionic onwards

No GUI appears on images ubuntu bionic or higher such as Debian buster/experimental. The reason is still unclear. This is probably related to the now Wayland server. Tips appreciated.

running the command in ubuntu bionic or higher such as Debian buster/experimental:

$docker run --rm     --cap-drop=all     --net=host     --volume=/tmp/.X11-unix:/tmp/.X11-unix     --user=1000:1000     -e DISPLAY=unix:0     --volume=/home/raabf/.config/dockertexstudio:/home/.config/texstudio     --volume=/home/raabf/:/home/raabf/      -e HOME=/home/     --name=texstudio_bionic --workdir=/home/     mytexstudio:bionic texstudio

results in no GUI appears and the output

QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-'
libGL error: MESA-LOADER: failed to retrieve device information
libGL error: Version 4 or later of flush extension not found
libGL error: failed to load driver: i915
libGL error: failed to open drm device: No such file or directory
libGL error: failed to load driver: i965
dbus[1]: The last reference on a connection was dropped without closing the connection. This is a bug in an application. See dbus_connection_unref() documentation for details.
Most likely, the application was supposed to call dbus_connection_close(), since this is a private connection.
  D-Bus not built with -rdynamic so unable to print a backtrace

However the only difference in the output compared to previous images (such as stretch) is the QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-'. Handling that:

First run

$xhost +
$xhost +local:docker

They are probably necessary (I am not sure that this helps) that docker can connect to the host's X-Server. This is a now security policy. Then:

$docker run --rm     --cap-drop=all     --net=host     --volume=/tmp/.X11-unix:/tmp/.X11-unix     --user=1000:1000     -e DISPLAY=unix:0     --volume=/home/raabf/.config/dockertexstudio:/home/.config/texstudio     --volume=/home/raabf/:/home/raabf/      -e HOME=/home/     --name=texstudio_bionic --workdir=/home/ -e XDG_RUNTIME_DIR=/tmp/xdgruntime   mytexstudio:bionic /bin/bash -c "mkdir /tmp/xdgruntime; chown 1000:1000 /tmp/xdgruntime; chmod 700 /tmp/xdgruntime; texstudio"
access control disabled, clients can connect from any host
libGL error: MESA-LOADER: failed to retrieve device information
libGL error: Version 4 or later of flush extension not found
libGL error: failed to load driver: i915
libGL error: failed to open drm device: No such file or directory
libGL error: failed to load driver: i965
dbus[11]: The last reference on a connection was dropped without closing the connection. This is a bug in an application. See dbus_connection_unref() documentation for details.
Most likely, the application was supposed to call dbus_connection_close(), since this is a private connection.
  D-Bus not built with -rdynamic so unable to print a backtrace
/bin/bash: line 1:    11 Aborted                 (core dumped) texstudio

results in a coredump. Sadly there is no information what causes this error.

Possible resources:

https://unix.stackexchange.com/questions/382789/qstandardpaths-xdg-runtime-dir-not-set-defaulting-to-tmp-runtime-root-when

https://forums.opensuse.org/showthread.php/529468-QStandardPaths-XDG_RUNTIME_DIR-not-set-defaulting-to-tmp-runtime-root

https://unix.stackexchange.com/questions/330366/how-can-i-run-a-graphical-application-in-a-container-under-wayland

https://github.com/jessfraz/dockerfiles/issues/155

https://github.com/chanezon/docker-tips/tree/master/x11 (for mac probably unrelated)

https://unix.stackexchange.com/questions/118811/why-cant-i-run-gui-apps-from-root-no-protocol-specified

http://wiki.ros.org/docker/Tutorials/GUI

Edited by Fabian Raab