コンテナはホストのディスプレイセッションに自動的にはアクセスできません。GUI クライアントには、 適切なディスプレイソケット、環境変数、および認証情報が必要です。これらを公開すると、 コンテナにユーザーセッションを実質的に制御する権限が与えられるため、信頼できるイメージに 対してのみ行うべきです。
X11 #
X11 では、ホストのソケットディレクトリ(一般には /tmp/.X11-unix)をマウントし、
DISPLAY を渡します。クライアントには対応する Xauthority cookie も必要です。通常は、
対象を限定した cookie ファイルをマウントして XAUTHORITY を設定することで提供します。
xhost + は使用しないでください。このコマンドはディスプレイのアクセス制御を無効にします。
X11Docker を使用すると、この構成をより厳しく制限するラッパーを作成できます。
Wayland #
Wayland クライアントは、一般に /run/user/<uid>/wayland-0 である
$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY に接続します。コンテナは互換性のあるユーザーとして
実行し、必要なランタイムソケットと環境だけを受け取る必要があります。多くのデスクトップセッションは
Xwayland を提供しているため、X11 クライアントは X11 経由でも利用できます。ネイティブ Wayland
サポートでは、この互換性レイヤーを回避できますが、信頼できないコードとソケットを安全に
共有できるようになるわけではありません。
リモートデスクトップ #
リモートまたはストリーミングされるアプリケーションには、VNC の方が適切な分離境界となることが あります。サーバーが独立したデスクトップを所有し、クライアントはホストの特権的な ディスプレイソケットではなく、エンコードされたピクセルを受信するためです。また、ブラウザー経由の 配信、録画、またはセッション分離が必要な場合にも有用です。
コメント
GitHub で閲覧・コメントする(投稿にはログインが必要です)