X11 GUI application on OSX with docker

首先需要安裝socat以及xquartz

brew install socat
brew cask install xquartz

並建議重開機!

另外最好開啟opengl for x11的功能(refer)

defaults write org.macosforge.xquartz.X11 enable_iglx -bool true

接著開啟XQuartz

open -a XQuartz &

然後就可以不理會XQUartz的視窗

然後在Terminal下達執行X11代理程式

socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\" &

最後就可以在Terminal中啟動docker

docker run -ti --rm \
    -e DISPLAY=192.168.1.1:0 \
    --volume="$HOME/.Xauthority:/root/.Xauthority:rw" \
    -v /tmp/.X11-unix:/tmp/.X11-unix \
    firefox firefox

其中192.168.1.1為MacOS的IP


若Client端是Windows的話
可由xming以及putty的配合,透過遠端的linux(無GUI的server也可以),在windows上顯示GUI

1.首先安裝xming
2.開啟putty,並將X11 forwarding打開

3.連入遠端linux.
4.接著輸入下列語法,啟動firefox

docker run -it --rm \
  --net=host --env="DISPLAY" \
  --volume="$HOME/.Xauthority:/root/.Xauthority:rw" \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  firefox firefox

另外在win10內,可以透過ubuntu bash+docker+xming來顯示GUI介面

前提: 已經可以在ubuntu bash中執行docker,請參考此處

首先在C:\Program Files (x86)\Xming\X0.hosts加入win10的ip
接著重新啟動xming
最後就可以在ubuntu bash中啟動

docker run -it --rm \
  --net=host \
  --env "DISPLAY=$(ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{print $1}'):0" \
  firefox firefox[/code]

發佈留言