Zenn
🌊

Docker上のX11GUIをWindowsで使う

2021/07/12に公開1

DISPLAY host.docker.internal:0.0を使う

WSL嫌いの人も安心
------------------- ↓ 前書はここから ↓-------------------

Docker上に載ってるブラウザをWindowsで見る方法はないかと調査。

( ^ω^)・・・

別の方法で解決...

せっかく調べたので記載するか
WSLあるから使う機会はないかもな

ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪

------------------- ↓ 本題はここから ↓-------------------

Windows上にDocker Desktopをインストール

Windows上にDocker Desktopをインストールする。
Windows10を最新にしておくのが前提

ストアページからアプリ インストーラーをインストールする
PowerShellを起動し以下のコマンドを実行

winget install Docker.DockerDesktop

VCXSRV(またはX410)のインストール

Vcxsrvの場合

XサーバーがWindows側に必要なので別途用意する
(WSLgは現状WSL越しじゃないと使えないっぽい)

winget install marha.VcXsrv

デスクトップアイコンやスタートメニューからXLaunchを起動
設定項目は特に変更せずNextを連打

Windowsファイヤーウォールの設定をOKする。

X410の場合

ストアからインストール

タスクバーを右クリックしてAllow Public Accessにチェックを入れる

Dockerfile作成

X11アプリを含むdockerイメージを作成。
DISPLAY値を localhostではなく host.docker.internalとする

Dockerfile
FROM debian:stable-slim

RUN apt-get update -y\
 && apt-get install x11-apps -y

ENV DISPLAY host.docker.internal:0.0

RUN useradd -ms /bin/bash xuser
USER xuser
WORKDIR /home/xuser/

CMD ["xeyes"]

実行

docker build . -t xeyes:1.0
docker run --rm -it -t xeyes:1.0

<●><●>

Discussion

ringring

Docker上からGUI利用するために参考にしてうまくいきました、ありがとうございます!
なぜこれでうまくいくのか理由分かりますか?
Vcxsrvの設定中デフォルトだとDisable access controlにチェックがついてなく、(Dockerコンテナからのアクセスを許可するため)チェックをつけることを必須としている記事が多かったです。
チェックしない場合は個別に特定アドレスの接続許可がいるような感じだったのですが、それも無くいけてしまったので謎...となっています

ログインするとコメントできます