This is a short guide explaining how to run GUI applications from within Docker on Mac. This uses XQuartz to enable to set the DISPLAY
variable within the container.
Install XQuartz
- Unfortunately, that is not correct since the IP 0.0.0.0 is the IP to access ES container from the host machine i.e. Another container will not be able to access this on the same IP address.
- This information is as of 2018-03-31 with Docker 18.03.0-ce. I wanted to access host port from a docker container. For example, an nginx process is running on the host machine with port 8888 open, then I would like to create a container which can curl host:8888.
You can install XQuartz using homebrew with brew cask install xquartz
or directly from the website here. At the time of writing, I had 2.7.11
installed on my machine with OSX El Capitan. After installing XQuartz restart your machine.
Docker on Mac with Homebrew: A Step-by-Step Tutorial. Docker has changed the way developers work. It provides an easy way to safely move code from one machine to another without worrying about dependencies and server versions.
Install Docker for Mac
Install docker using brew cask install docker
or directly from the website here.
Run XQuartz
Start XQuartz from command line using open -a XQuartz
. In the XQuartz preferences, go to the “Security” tab and make sure you’ve got “Allow connections from network clients” ticked:
Host Machine IP
IP=$(ifconfig en0 | grep inet | awk '$1'inet' {print $2}')
should set the IP
variable as the ip of your local machine. If you’re on wifi you may want to use en1
instead of en0
, check the value of the variable using echo $IP
.
Now add the IP using Xhost with xhost + $IP
. If the xhost command is not found check /usr/X11/bin/xhost
as that might not be in your path.
Running a container
You can now try running firefox in your container with:
Docker For Mac Machine Ip Addresses
or run octave using: