😊

DockerでGUIアプリケーションを開く基本的な押さえどころ

2021/11/20に公開

結論

DockerでGUIアプリケーションを開こうとした場合、本当に必要な操作は2点のみです。

  • xhost +local:
  • docker run --rm -it -e DISPLAY=$DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix: image:tag

詳細

xhost

Xサーバへのアクセスの許可・不許可を設定するxhostコマンドを用いて前準備をします。xhostに引数を与えない場合現在の設定の確認が出来ます。xhost +local:でローカルホストを追加できxhost -local:で削除できます。

~$ xhost +local:
non-network local connections being added to access control list

~$ xhost
access control enabled, only authorized clients can connect
LOCAL:  ←LOCALが追加された事が分かる
SI:localuser:***

~$ xhost -local:
non-network local connections being removed from access control list

~$ xhost
access control enabled, only authorized clients can connect
SI:localuser:***
  ←LOCALが削除された事が分かる

xhost +とすると全てのホストからアクセス可能になってしまいとても危険なのでやらない。
Dockerコンテナを使い終わった後はxhost -local:を忘れずに。

build and run

docker build
docker build -t image:tag .

docker runの引数にはひと工夫必要です。

docker run
xhost +local:
docker run --rm -it -e DISPLAY=$DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix: image:tag

最後に

まずは難しいことを考えずGUIアプリケーションの起動を確認できてから設定をつめましょう。docker runの引数はdocker-composeに押し込めたりしても良いと思います。それらはDocker コンテナ内のGUIアプリを起動してホスト側に表示するが参考になります。

最後までお読み頂きありがとうございました。

Discussion