Running desktop apps on Docker containers: X11 forwarding
Table of Contents
If you want to do X11 forwarding from your container to your host, you can type these simple commands (these methods work on a local machine, if you are connecting to a remote machine with SSH, it won’t work).
Podman users: you can run these commands with podman
, just replace docker
with podman
.
With SSH
In this method, we are going to install an SSH server on the container. Then, we are going to forward the Thunar File Manager.
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 ofdocker0
interface. --rm
removes the container when you exit from it.
Inside the container:
- Install SSH server, a text editor and the graphical application
apt update
apt install -y openssh-server thunar nano
- Edit
/etc/ssh/sshd_config
to enable X11 forwarding:
nano /etc/ssh/sshd_config
# /etc/ssh/sshd_config
# Modify these lines (uncomment if needed)
X11Forwarding yes
X11UseLocalhost no
- Run
sshd
, SSH daemon:
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 (passwd root
), then change this line in /etc/ssh/sshd_config
(uncomment if needed):
PermitRootLogin yes
From the host:
- Connect to the container (using container IP)
ssh -X root@172.17.0.2
- Run the graphical application:
thunar
Without SSH
docker run -it --rm --net=host -v $HOME/.Xauthority:/root/.Xauthority:ro debian
Inside the container (I’m going to install xterm
, a terminal emulator):
export DISPLAY=:0.0
apt update
apt install xterm
xterm
Complete desktop environment
Check How to add a desktop environment via Docker to find some Docker images that include a desktop environment.
If you have any suggestion, feel free to contact me via social media or email.
Latest tutorials and articles:
Featured content: