Docker on MacでX Windowアプリを動かしたい
Xサーバのインストール
Mac用のXサーバであるXQuartzをインストールする。以下のサイトよりインストーラをダウンロードし、インストールする。
XQuartzの以下の2つの設定を有効にするため、
https://gyazo.com/9fd272eee6412cfc5fbed9355e739ed1
以下のコマンドを実行しておく。
code:sh
$ defaults write org.xquartz.X11 nolisten_tcp -bool false
$ defaults write org.xquartz.X11 no_auth -bool false
また、Dockerコンテナ内のXクライアントからの接続を許可するため、以下の内容の設定ファイルを所定の位置に配置しておく。
code:~/.xinitrc.d/xhost-config.sh
xhost +localhost
実行権限の付与も忘れずに。
code:sh
chmod +x ~/.xinitrc.d/xhost-config.sh
UbuntuへX Window Systemをインストール
素のままの Ubuntu のコンテナを起動して、
code:sh
$ docker pull ubuntu
$ docker run --platform=linux/amd64 --rm -it ubuntu bash
X Window System をインストール(途中でタイムゾーンを聞かれるので Tokyo を選択する)
code:sh
$ apt-get update
$ apt-get install -y xserver-xorg x11-apps
コンテナに行なった変更を、Dockerイメージとして書き出す。
コンテナのIDを確認して、
code:sh
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
30fa6454c044 ubuntu "bash" 23 minutes ago Up 23 minutes quizzical_kepler
イメージへ書き出す
code:sh
$ docker commit 30fa6454c044 ubuntu-x11
Xアプリを起動してみる
Mac上でXサーバを起動し、
code:sh
$ open /Applications/Utilities/XQuartz.app
先ほど作成してX Window System入りのUbuntuイメージから xeyes を起動する
code:sh
$ docker run --rm -e DISPLAY=host.docker.internal:0 -v ~/.Xauthority:/root/.Xauthority ubuntu-x11 /usr/bin/xeyes
目玉が出てくればOK
https://gyazo.com/621620aaffb46dc47bcf097137762114