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