😊
DockerでGUIアプリケーションを開く基本的な押さえどころ
結論
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