20

I have been trying to follow the instructions on https://learning-continuous-deployment.github.io/docker/images/dockerfile/2015/04/22/docker-gui-osx/ about running GUI apps in a docker container inside a MacBookPro host (using Docker tools).

I created a simple docker container using Fedora 23 and with firefox installed.

I try to run firefox and after about a minute I get the following error:

Unable to init server: Broadway display type not supported: 192.168.57.3:0
Error: cannot open display: 192.168.57.3:0

Does anyone have a clue what the error means and/or how to fix it?

3 Answers 3

25

On a Mac you may find the following steps useful:

  1. Install XQuartz
  2. Open it, goto preferences > Security and check the option to allow connections from network clients
  3. Reboot
  4. Start XQuartz (from the applications folder or with open -a XQuartz)
  5. Allow incoming connections from your ip with xhost + $IP (see note 1)
  6. Run firefox in your docker container (see note 2)

Note 1: Here's a neat trick toget your ip address:

export IP=$(ifconfig en0 | grep inet | awk '$1=="inet" {print $2}') 

Note 2: And an example docker run command to start firefox

docker run -it -e DISPLAY=$IP:0 -v /tmp/.X11-unix:/tmp/.X11-unix <image> firefox
Sign up to request clarification or add additional context in comments.

5 Comments

Thanks. As far as I can remember this is the procedure I followed. I no longer have a macbookpro and can not verify.
Step 3 is important! Logging out and back in is not enough!
This worked brilliantly. Should be the accepted answer
Thanks! Works like a charm. Question: why do we have to get the actual address of the net adapter? Why can't we use 127.0.0.1 if all this is happening on a single host? Unrelated: grep ... | awk ... is always redundant. You can always add a match clause to awk: grep abc | awk '$1=="xyz"' becomes awk '$0~/abc/ && $1=="xyz"'. Here though, event that's redundant, since grep inet is always true for rows whose first column equals "inet"; you can just drop the grep command.
I now am back to using a MacBookPro. I do not know why this solution did not previously work for me, but it does now. So I can personally verify it works. Maybe it works on modern MacBookPros and not on older models. Don't know.
2

Rebooting my laptop fixed the problem for me.

1 Comment

This worked for me as well. Something to do with XQuartz or xhost right after setting everything up.
2

I was seeing the same error and unfortunately rebooting did not solve the problem for me. However, I was able to get it working by mounting and pointing to my local .Xauthority file:

IP=$(ifconfig en0 | grep inet | awk '$1=="inet" {print $2}')
docker run --rm  --name firefox -e DISPLAY=$IP:0 -e XAUTHORITY=/.Xauthority --net host -v /tmp/.X11-unix:/tmp/.X11-unix -v ~/.Xauthority:/.Xauthority  jess/firefox

Of course, this assumes your XQuarts/xhost stuff is properly configured according to this answer

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.