Structure and Interpretation of Computer Programmers

I make it easier and faster for you to write high-quality software.

Monday, October 12, 2020

Running Linux GUI apps under MacOS using Docker

I had need to test an application built for Linux, and didn’t want to run a whole desktop in a window using Virtualbox. I found the bits I needed online in various forums, but nowhere was it all in one place. It is now!

Prerequisites: Docker and XQuartz. Both can be downloaded from homebrew.

Create a Dockerfile:

FROM debian:latest


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


RUN export uid=501 gid=20 && \
    mkdir -p /home/user && \
    echo "user:x:${uid}:${gid}:User,,,:/home/user:/bin/bash" >> /etc/passwd && \
    echo "staff:x:${uid}:" >> /etc/group && \
    echo "user ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers && \
    chmod 0440 /etc/sudoers && \
    chown ${uid}:${gid} -R /home/user


USER user
ENV HOME /home/user
CMD /usr/bin/iceweasel

It’s good to mount the Downloads folder within /home/user, or your Documents, or whatever. On Catalina or later you’ll get warnings asking whether you want to give Docker access to those folders.

First time through, open XQuartz, goto preferences > Security and check the option to allow connections from network clients, quit XQuartz.

Now open XQuartz, and in the xterm type:

$ xhost + $YOUR_IP
$ docker build -f Dockerfile -t firefox .
$ docker run -it -e DISPLAY=$YOUR_IP:0 -v /tmp/.X11-unix:/tmp/.X11-unix -v $HOME/Downloads:/home/users/Downloads firefox

Enjoy firefox (or more likely, your custom app that you’re testing under Linux)!

Iceweasel on Debian on macOS

posted by Graham at 17:09  

2 Comments »

  1. Had to make this edit:

    mkdir -p /home/user && \

    And would only work with this command so far:

    docker run -it -e DISPLAY=192.168.0.104:0 firefox

    I.e., no -v options.

    Still experimenting.

    Much thanks!

    Comment by Paul Leddy — 2020-10-14 @ 00:34

  2. Thank you! I’ve fixed the line in the Dockerfile. I don’t know why your -v isn’t working; what are you trying and what do you see?

    Comment by Graham — 2020-10-14 @ 06:41

RSS feed for comments on this post. TrackBack URI

Leave a comment

Powered by WordPress