Linuxでは、X Window Systemを使用してGUI環境が提供される。 これをMacの環境から見る。
Macの環境準備
まずはMac向けX WIndow SystemであるXQuartzをインストールする。
homebrewで提供されているため、brewコマンドでインストールする
brew install --cask xquartz
GUIのアプリケーションのため、caskオブションが必要となる
インストールが終わったら、一旦Macをログアウトもしくは再起動する。
再ログインすると、DISPLAY
環境変数が設定された状態になる。
XQuartzの設定
インストールしたXquartzの設定 > セキュリティのタブで、ネットワーク・クライアントからの接続を許可
にチェックを入れておく
docker-composeへの設定
以下は設定例。重要な設定は7行目と9行目である。
version: "3.8"
services:
xapp:
build: ./docker
environment:
DISPLAY: host.docker.internal:0
volumes:
- ~/.Xauthority:/root/.Xauthority:ro
X11の仕組みとして、アプリケーションプロセスを実行するのがクライアント、GUIを画面描画するのがサーバとなる。
DISPLAY変数に設定する接続先はMacのアドレスとなる。
docker desktopを使用しているのであれば、ホスト側IPはhost.docker.internal
で指定できる。
また、接続の認証のために.Xauthorityをコンテナ内のホームディレクトリにマウントする
動作確認
適当にGUIアプリを起動してみる。debianベースのイメージならx11-apps
パッケージからxeyes
が利用できる
apt install x11-apps
xeyes
Mac側のXQuartz内でxeyesアプリが動作していることが確認できればOK