Clients X Window

Supponiamo di voler costruire un'immagine che produca il client grafico Firefox.

mkdir -p ~/docker/ex/xwin
cd ~/docker/ex/xwin
vim Dockerfile
FROM ubuntu:14.04

RUN apt-get update && apt-get install -y firefox

# Replace 1000 with your user / group id
RUN export uid=1000 gid=1000 && \
mkdir -p /home/developer && \
echo "developer:x:${uid}:${gid}:Developer,,,:/home/developer:/bin/bash" >> /etc/passwd && \
echo "developer:x:${uid}:" >> /etc/group && \
echo "developer ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/developer && \
chmod 0440 /etc/sudoers.d/developer && \
chown ${uid}:${gid} -R /home/developer

USER developer
ENV HOME /home/developer
CMD /usr/bin/firefox

Costruire l’immagine con:

docker build -t firefox .

Impiega un tempo lunghissimo.

Deve scaricare e installare circa cento componenti e librerie che compongono il sistema X Window.

Docker è inteso per i server, non per i client grafici.

Al termine, lanciare con:

docker run -ti --rm \
  -e DISPLAY=$DISPLAY \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  firefox

C’è un mappaggio del socket unix di X Window

  • X Window in Ubuntu funziona solo con socket Unix non Inet

Se di usa --net=host per mappare tutti i socket:

docker run --rm -e DISPLAY --net=host firefox