# Getting X11 GUI applications to work on OS X with Docker Install depedent packages via Brew (one-time setup) ```bash $ brew install socat $ brew cask install xquartz ``` Setup XQuartz ```bash # optionally, stop xQuartz opening XTerm (I find this behavior annoying) $ defaults write org.macosforge.xquartz.X11 nolisten_tcp 0 $ defaults write org.macosforge.xquartz.X11 app_to_run /usr/bin/true ``` ![4077d680-b18e-11eb-8550-088a0fdb966e (1)](https://user-images.githubusercontent.com/45856929/117921563-ccc8ed00-b2a5-11eb-8424-4e831e983557.png) Setup environment ```bash # setup using docker backed by virtualbox via DOCKER_HOST $ eval $(docker-machine env) ; docker-machine ip # start XQuartz session $ open -a XQuartz # Port forward x11 app (inside docker) request to XQuartz (on macos host) $ socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\" ``` Using X11 App ```bash $ docker run --rm -e DISPLAY=$(docker-machine ip):0 [image] [command] $ export DISPLAY=192.168.99.1:0 # <-- YMMV, default for docker-machine with virtualbox deployment # chrome (testing secure CSA cluster, modified /etc/krb5.conf) $ docker run \ --rm \ --name chrome \ --net host \ --volume "${HOME}/Downloads:/root/Downloads" \ --volume "${HOME}/.config/google-chrome/:/data" \ --security-opt seccomp:unconfined \ --env "DISPLAY=192.168.99.1:0" \ jess/chrome -- bash # firefox (testing secure CSA cluster, modified /etc/krb5.conf) $ docker run -ti -e DISPLAY=192.168.99.1:0 jess/firefox # intellij (professional features?) $ docker run --rm \ -e DISPLAY=${DISPLAY} \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -v ~/.Idea:/home/developer/.Idea \ -v ~/.Idea.java:/home/developer/.java \ -v ~/.Idea.maven:/home/developer/.m2 \ -v ~/.Idea.gradle:/home/developer/.gradle \ -v ~/.Idea.share:/home/developer/.local/share/JetBrains \ -v ~/Project:/home/developer/Project \ --name idea-$(date +'%Y%m%d-%H%M%S') \ rycus86/intellij-idea-pro:latest # pycharm $ docker run --rm \ -e DISPLAY=${DISPLAY} \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -v ~/.PyCharm:/home/developer/.PyCharm \ -v ~/.PyCharm.java:/home/developer/.java \ -v ~/.PyCharm.py2:/usr/local/lib/python2.7 \ -v ~/.PyCharm.py3:/usr/local/lib/python3.7 \ -v ~/.PyCharm.share:/home/developer/.local/share/JetBrains \ -v ~/Project:/home/developer/Project \ --name pycharm-$(date +'%Y%m%d-%H%M%S') \ rycus86/pycharm-pro:latest $ docker run --rm -e DISPLAY=192.168.99.1:0 davechick/arduino-dev arduino ``` See https://github.com/docker/docker/issues/8710 for more info