Waylandの下のコンテナでグラフィカルアプリケーションを実行するにはどうすればよいですか?

ウィリバレンティン

X11デスクトップを使用した場合、$DISPLAY変数と/tmp/X11-unixディレクトリを共有することで、Dockerコンテナでグラフィカルアプリケーションを実行できました例えば:

docker run -ti -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix some:ubuntu xclock

現在、Waylandを実行しているFedora 25を使用しているため、コンテナーと共有するX11インフラストラクチャはありません。コンテナでグラフィカルアプリケーションを起動し、デスクトップに表示するにはどうすればよいですか?XWaylandで結ぶ方法はありますか?

m平方メートル

WaylandでFedora25を実行しているとおっしゃっていますが、Gnome-Waylandデスクトップを使用していると思います。

Gnome-WaylandはXwaylandを実行してXアプリケーションをサポートします。Xorgで以前と同じようにXwaylandアクセスを共有できます。

あなたの例のコマンドは失敗XAUTHORITYします、そしてあなたは言及しませんxhostDocker内のXアプリケーションがXwayland(または任意のX)にアクセスできるようにするには、この方法の1つが必要です。これはすべてWaylandとは関係がないので、DockerコンテナでGUIアプリケーションを実行するにはどうすればよいですか?を参照してくださいDockerでXアプリケーションを実行する方法について。

要するに、xhostを使用した2つのソリューション:

  1. xhostを介したローカルユーザーアクセスを許可し、xhost +SI:localuser:$(id -un)dockerrunオプションを使用して同様のユーザーを作成します。--user=$(id -u):$(id -g)
  2. 推奨されません:Xへのルートアクセスを許可します xhost +SI:localuser:root

関連する落とし穴:Xは通常、共有メモリ(X拡張子MIT-SHM)を使用しますDockerコンテナーは分離されており、共有メモリーにアクセスできません。これにより、レンダリングの不具合やRAMアクセスの失敗が発生する可能性があります。dockerrunオプションを使用するとこれを回避できます--ipc=hostこれは、IPCの名前空間を無効にするため、コンテナーの分離に影響を与えます。比較:https//github.com/jessfraz/dockerfiles/issues/359


Xを使用せずにDockerでWaylandアプリケーションを実行するには、Gnome-WaylandやWestonなどの実行中のWaylandコンポジターが必要です。Waylandソケットを共有する必要があります。あなたはそれを見つけXDG_RUNTIME_DIR、その名前はに保存されWAYLAND_DISPLAYます。XDG_RUNTIME_DIRだけでは、その所有者のためのアクセスを可能にするには、ホスト上のような容器内の同じユーザーを必要とします。例:

docker run -e XDG_RUNTIME_DIR=/tmp \
           -e WAYLAND_DISPLAY=$WAYLAND_DISPLAY \
           -v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/$WAYLAND_DISPLAY  \
           --user=$(id -u):$(id -g) \
           imagename waylandapplication

QT5アプリケーションも必要-e QT_QPA_PLATFORM=waylandであり、で開始する必要がありますimagename dbus-launch waylandapplication


dockerのXおよびWaylandアプリケーション用のx11dockerは、オールインワンソリューションです。また、コンテナーの分離を維持することも考慮します(例のように、単にホストXディスプレイを共有すると失われます)。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Dockerコンテナ内で実行中のアプリケーションのログを確認するにはどうすればよいですか?

分類Dev

QtとD-Busを使用してDockerコンテナでグラフィカルアプリケーションを正しく実行するにはどうすればよいですか?

分類Dev

Silexアプリケーションのトラブルシューティングを行うにはどうすればよいですか?

分類Dev

android 5.0(L)で実行中のアプリケーションアクティビティ名を取得するにはどうすればよいですか?

分類Dev

ターミナルから「アプリケーションの実行」ダイアログを開くにはどうすればよいですか?

分類Dev

同じコンテナで同じコードベースで異なるプロファイルを使用して実行されている2つのSpringBootアプリケーションをリモートデバッグするにはどうすればよいですか?

分類Dev

Windowsでアプリケーション固有のルーティングテーブルを設定するにはどうすればよいですか?

分類Dev

実行中のアプリケーションのコマンドラインを取得するにはどうすればよいですか?

分類Dev

実行中のアプリケーションのコマンドラインを取得するにはどうすればよいですか?

分類Dev

実行中のアプリケーションのコマンドラインを取得するにはどうすればよいですか?

分類Dev

実行中のアプリケーションのコマンドラインを取得するにはどうすればよいですか?

分類Dev

実行可能ファイルをアプリケーションプログラムとして変更するにはどうすればよいですか?

分類Dev

DockerコンテナとノードアプリケーションをEC2で実行し続けるにはどうすればよいですか?

分類Dev

ローカルホストで複数のExpress / Nodejsアプリケーションを実行するにはどうすればよいですか?

分類Dev

Windowsフォーム内でコンソールアプリケーションコードを実行するにはどうすればよいですか?

分類Dev

Node.jsを使用してMacのフォアグラウンドで実行されているアプリケーションウィンドウの座標を取得するにはどうすればよいですか?

分類Dev

別の拡張子の関連アプリケーションでファイルを実行するにはどうすればよいですか?

分類Dev

現在のアプリケーションから別のアプリケーションを実行するにはどうすればよいですか?

分類Dev

添付のreactWebアプリケーションをコンパイルして実行するにはどうすればよいですか?

分類Dev

EclipseのTomcat7で「起動中に子コンテナーが失敗しました」エラーなしでWebアプリケーションを実行するにはどうすればよいですか?

分類Dev

Webアプリケーションで作成されたdivを親コンテナの左上隅に表示するにはどうすればよいですか?

分類Dev

実行時にシングルクリックでアプリケーション全体のカスタムテーマを設定するにはどうすればよいですか?

分類Dev

デフォルトのプログラムリストにアプリケーションを追加するにはどうすればよいですか

分類Dev

Pythonディクショナリのアイテムをランダムな順序でループするにはどうすればよいですか?

分類Dev

サイドナビゲーションプライマリコンテンツエリア内のマット拡張パネル内にマットカードをレンダリングするにはどうすればよいですか?

分類Dev

フラスコアプリケーションの初期化時にファイルをロードするにはどうすればよいですか

分類Dev

Linuxのターミナルからコンソールアプリケーションを起動するにはどうすればよいですか?

分類Dev

アプリケーションの最初の実行時にのみ警告ダイアログを表示するにはどうすればよいですか?

分類Dev

クラッシュした場合でも、グラフィカルアプリケーションを実行し続けるにはどうすればよいですか?

Related 関連記事

  1. 1

    Dockerコンテナ内で実行中のアプリケーションのログを確認するにはどうすればよいですか?

  2. 2

    QtとD-Busを使用してDockerコンテナでグラフィカルアプリケーションを正しく実行するにはどうすればよいですか?

  3. 3

    Silexアプリケーションのトラブルシューティングを行うにはどうすればよいですか?

  4. 4

    android 5.0(L)で実行中のアプリケーションアクティビティ名を取得するにはどうすればよいですか?

  5. 5

    ターミナルから「アプリケーションの実行」ダイアログを開くにはどうすればよいですか?

  6. 6

    同じコンテナで同じコードベースで異なるプロファイルを使用して実行されている2つのSpringBootアプリケーションをリモートデバッグするにはどうすればよいですか?

  7. 7

    Windowsでアプリケーション固有のルーティングテーブルを設定するにはどうすればよいですか?

  8. 8

    実行中のアプリケーションのコマンドラインを取得するにはどうすればよいですか?

  9. 9

    実行中のアプリケーションのコマンドラインを取得するにはどうすればよいですか?

  10. 10

    実行中のアプリケーションのコマンドラインを取得するにはどうすればよいですか?

  11. 11

    実行中のアプリケーションのコマンドラインを取得するにはどうすればよいですか?

  12. 12

    実行可能ファイルをアプリケーションプログラムとして変更するにはどうすればよいですか?

  13. 13

    DockerコンテナとノードアプリケーションをEC2で実行し続けるにはどうすればよいですか?

  14. 14

    ローカルホストで複数のExpress / Nodejsアプリケーションを実行するにはどうすればよいですか?

  15. 15

    Windowsフォーム内でコンソールアプリケーションコードを実行するにはどうすればよいですか?

  16. 16

    Node.jsを使用してMacのフォアグラウンドで実行されているアプリケーションウィンドウの座標を取得するにはどうすればよいですか?

  17. 17

    別の拡張子の関連アプリケーションでファイルを実行するにはどうすればよいですか?

  18. 18

    現在のアプリケーションから別のアプリケーションを実行するにはどうすればよいですか?

  19. 19

    添付のreactWebアプリケーションをコンパイルして実行するにはどうすればよいですか?

  20. 20

    EclipseのTomcat7で「起動中に子コンテナーが失敗しました」エラーなしでWebアプリケーションを実行するにはどうすればよいですか?

  21. 21

    Webアプリケーションで作成されたdivを親コンテナの左上隅に表示するにはどうすればよいですか?

  22. 22

    実行時にシングルクリックでアプリケーション全体のカスタムテーマを設定するにはどうすればよいですか?

  23. 23

    デフォルトのプログラムリストにアプリケーションを追加するにはどうすればよいですか

  24. 24

    Pythonディクショナリのアイテムをランダムな順序でループするにはどうすればよいですか?

  25. 25

    サイドナビゲーションプライマリコンテンツエリア内のマット拡張パネル内にマットカードをレンダリングするにはどうすればよいですか?

  26. 26

    フラスコアプリケーションの初期化時にファイルをロードするにはどうすればよいですか

  27. 27

    Linuxのターミナルからコンソールアプリケーションを起動するにはどうすればよいですか?

  28. 28

    アプリケーションの最初の実行時にのみ警告ダイアログを表示するにはどうすればよいですか?

  29. 29

    クラッシュした場合でも、グラフィカルアプリケーションを実行し続けるにはどうすればよいですか?

ホットタグ

アーカイブ