Skip to content

x11docker on MS Windows

Martin Viereck edited this page Jul 29, 2022 · 37 revisions

x11docker on MS Windows

x11docker can run natively on MS Windows electively in one of:

  • WSL (Windows subsystem for Linux)
    • x11docker is supposed to run in WSL2, too. This is barely tested yet. Feedback is appreciated whether it works or fails.
    • In WSL2 x11docker defaults to use a native Docker installation within WSL2. To use the Docker-for-win MobyVM instead, add option --mobyvm.
  • Cygwin
  • MSYS2

x11docker on MS Windows provides basic functionality, but misses some features available on Linux. For example, options --webcam, --pulseaudio and --printer do not work. However, running in a Linux VM instead of running directly on MS Windows is fully supported.

Installation

  • To install x11docker in one of MSYS2, Cygwin or WSL follow the general installation instructions.
    • For the shortest way you might need to install curl first.
  • Provide an X server to allow graphical Linux applications.

X server

x11docker needs an X server on MS Windows. The X server can bei either XWin from Cygwin/X or VcXsrv.

  • In Cygwin it is enough to install packages xinit, xauth and xhost using the Cygwin installer. That provides X server XWin.
  • In WSL and WSL2 you need to install runx and xhost to provide X server VcXsrv or XWin.
  • In MSYS2 you need to install runx to provide X server VcXsrv.
    • In MSYS2 only X server VcXsrv is supported by runx. XWin is not supported in MSYS2.
    • Usage in MSYS2 is discouraged because X server access can not be restricted with an authentication cookie.

Troubleshooting

  • Docker might be configured not to allow sharing files from drive C: or other Windows partitions. image

    • Change docker settings to allow access to drive C: (or another partition specified with --cachebasedir or --homebasedir).
      • x11docker creates cache files on drive C: that it shares with the container. You can specify another cache path with e.g. --cachebasedir=D:/x11docker/cache.
      • Same issue might occur with option --home. You can specify another home base folder with e.g. --homebasedir=D:/x11docker/home.
  • Firewall settings in Windows can cause issues for container applications accessing the X server. If everything starts up without an obvious error, but no application window appears, have a look at ticket #108. Firewall

  • Sometimes docker fails to start with an error message that it tries to create a shared folder that already exists on host:

    Error response from daemon: error while creating mount source path: mkdir /host_mnt/c: file exists.
    

    It is a bug of Docker or MS Windows. x11docker cannot do anything about it. Bug reports and workarounds here: https://github.com/docker/for-win/issues/1560 . One promising workaround seems to go into Docker settings and do "Reset credentials" under "Shared Drives", than restart Docker.

  • Error messages like ./x11docker: line 2: $'\r': command not found indicate a wrong line ending conversion from git. Run dos2unix x11docker once to fix it.

Clone this wiki locally