h-yuusuke
2022年1月25日 18時10分
お世話になっております。
掲題の件に関して下記質問がございます。
製品マニュアル「9.1.9.1. Waylandを扱う」(P.112)において、westonを起動したコンテナと、westonを使用するアプリを起動させるコンテナで"XDG_RUNTIME_DIR"を共有することでwestonを使用するアプリを起動できるとあります。
上記と同じようなことをX Window Systemでも可能でしょうか?
具体的には下記を想定しております。
・以下の2つのコンテナを用意。
①X Window Systemを起動するコンテナ (at-debian-imageからコンテナイメージを作成)
②GUIアプリ(Firefox)を起動するコンテナ (alpine-linuxベースでコンテナイメージを作成)
・②のコンテナで起動するFirefoxブラウザ画面を①のコンテナで起動しているX Window Systemを利用してArmadillo-IOT G4に接続されているディスプレイに表示させる。
コメント
h-yuusuke
ご返信ありがとうございます。
ご教授いただいた内容をもとに以下の手順を実施しましたが、X WindowコンテナとGUIアプリのコンテナとの連携ができておりません。
・実施手順
①環境変数DISPLAYを設定
export DISPLAY=192.168.1.101:0.0
②X WindowコンテナおよびGUIアプリコンテナのコンフィグファイルに下記を追加
volumes="/tmp/.X11-unix:/tmp/.X11-unix" append_args --env="DISPLAY"
③GUIアプリコンテナ起動後、コンテナにattachして「firefox」コマンドを実行
上記③実施時に下記のエラーが表示され、firefoxが起動できませんでした。
Unable to init server: Broadway display type not supported: 192.168.1.101;0.0 Error: cannot open display: 192.168.1.101;0.0
解決策がございましたら、ご教授願います。
at_dominique.m…
h-yuusukeさん、
> export DISPLAY=192.168.1.101:0.0
DISPLAYのhostnameの部分を設定すると、クライアントはTCPの手段しか試さないのでここで/tmpを共有したらDISPLAYを :0 か :0.0 にしてください。
DISPLAYについてはXのman pageに詳しく説明されてます。
なお、export DISPLAYより、コンフィグファイルに直接に設定すれば扱いやすいと思います。例えば、append_args --env "DISPLAY=:0"
> volumes="/tmp/.X11-unix:/tmp/.X11-unix" > append_args --env="DISPLAY"
(サーバー側のコンテナにDISPLAYの設定は不要です。邪魔になるかもしれませんので、クライアントになるコンテナだけにしてみて下さい)
よろしくお願いします
h-yuusuke
at_dominique.m…
2022年1月26日 9時03分
h-yuusukeさん
X11では、DISPLAYの環境変数を設定すれば以下のアドレスにコネクトしようとします:
- @"/tmp/.X11-unix/X$DISPLAY" (abstract unix socket)
- /tmp/.X11-unix/X$DISPLAY (unix socket)
- localhost:(6000+DISPLAY) (tcp)(サーバ側にデフォルトでlistenしません)
なのでどれかを共有すれば大丈夫です。
abstract unix socketはネットワークのnamespaceによる共有ができます、二つのコンテナを同じpodにすればDISPLAYの環境変数さえ設定すれば使えるはずです。/etc/atmark/containersのコンフィグの例が少ないが、以下のように使えます
普通のunix socketはファイルとして共有できますので、そちらは/tmpか/tmp/.X11-unixをボリュームにしたら使えるはずです。
申し訳ないがこちらで実際に試していませんので、何か問題あったらまた質問してください。
よろしくお願いします。