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
に追記して解決しました