If you want to do X11 forwarding from your container to your host, you can type these simple commands.

Table of Contents

With SSH

As an example, we are going to forward the Thunar File Manager from a Debian container.

docker run -it --rm -e DISPLAY=172.17.0.1:0.0 debian
  • For the DISPLAY variable, run ip r and look for the IP of docker0 interface.
  • --rm removes the container when you exit from it.

Inside the container:

apt update
apt install -y openssh-server thunar nano
nano /etc/ssh/sshd_config
# /etc/ssh/sshd_config
# Modify these lines (uncomment if needed)
X11Forwarding yes
X11UseLocalhost no
mkdir -p /run/sshd
/usr/sbin/sshd
# You can add a user if you don't want to ssh 
# to the container with the root user
useradd -m ricardo
passwd ricardo
  • If you want to use root, first add a password to the root, then change this line in /etc/ssh/sshd_config (uncomment if needed):
    PermitRootLogin yes
    

From the host:

  • Use container’s IP.
# Run thunar
thunar

Thunar with X11 forwarding

Without SSH

docker run -it --rm --net=host -v $HOME/.Xauthority:/root/.Xauthority:rw archlinux
  • This could work on containers in which the previous option does not work. Inside the container, run: export DISPLAY=:0.0.