Dockerで動かしているDebianコンテナのX ApplicationをホストOS上で表示する
Dockerfile
1 2
| FROM debian:buster-slim RUN apt update && apt install -y x11-apps
|
ビルドします
1
| $ docker build -t gui_test
|
実行(Linuxの場合)
1
| $ docker run -ti --rm -u $(id -u):$(id -g) -e DISPLAY=$DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix gui_test xclock
|
実行(Macの場合)
- XQuartzをインストール
- XQuartzを起動して「環境設定」→「セキュリティ」
- 接続を認証→チェックをはずす
- ネットワークからの接続を許可→チェックをいれる
- 再起動
- XQuartzを起動
export DISPLAY=host.docker.internal:0.0を実行(もしくは.bashrcなどに追記)
- 「実行(Linuxの場合)」のコマンドで実行
実行(Windows+Virtualboxの場合)
- Xmingをインストール
- ターミナル(MSYS2など)で、
export DISPLAY=localhost:0.0 ※1
- Vagrantfileに、
config.ssh.forward_x11 = trueを追加
vagrant up
vagrant ssh-configか、.ssh/configにForwardX11 yesがあるか確認
- sshでログイン
- ログイン後に、
export DISPLAY=localhost:0.0 ※2
- 「実行(Linuxの場合)」のコマンドで実行
(※1) 一般的にはlocalhostと書いてある記事が多かったですが、自分の場合はホストオンリーネットワークのGatewayアドレスでした 192.168.56.1
(※2) ※1で実行していますが、ログイン後にecho $DISPLAYしても何もセットされていなかったので、ログイン後の.bash_profileに追記して解決しました