我有一个无头的Ubuntu Server(19.04),我想在其上运行Docker容器,该容器的唯一目的是运行Android Studio。 Ubuntu Server没有任何GUI。严格来说,它仅是命令行。我目前在通过SSH隧道连接到Ubuntu Server的Ubuntu VM(18.04)上,该隧道通过另一个SSH隧道到达我的Home_Router:
ssh admin@Home_Router -L 22222:10.0.0.2:22
ssh user@localhost -p 22222
隧道图基本上是这个:
Me
(Ubuntu_VM) Home_Router Ubuntu_SVR
-------------- -------------- --------------
| | {INTERNET} | | | |
| ----------------->22 | | |
| 22222>==============================------>22 |
| | | | | |
-------------- -------------- --------------
10.0.0.2
Docker容器基于Alpine Linux,并安装了Android Studio,以及coreutils
,openjdk8-jre
和xorg-server
。当我使用以下命令运行容器时:
docker run -it -v "$HOME/.Xauthority:/root/.Xauthority:rw" --env DISPLAY="$DISPLAY" --net=host --rm android-studio
...我收到以下错误:
Startup Error: Unable to detect graphics environment
我需要做什么来将Android Studio GUI从Docker容器转发到我的Ubuntu VM?是否可以通过X11转发?
我能够弄清楚这一点-希望它可以对其他人有所帮助:
步骤1:在托管Docker容器的服务器上启用X11转发
确保/etc/ssh/sshd_config
包含以下行:
X11Forwarding yes
[SIGHUP
sshd
接取更改
cat /var/run/sshd.pid | xargs kill -1
如果已安装在服务器上,请验证xauth
which xauth
如果不是,请使用软件包管理器进行安装。
第2步:通过SSH进入托管Docker容器的服务器
在Linux中,您的ssh
命令需要包含-X
选项。示例:
ssh -X user@<IP_OF_DOCKER_SERVER>
从Windows(通过PuTTY):
步骤3:从SSH终端运行docker run
命令
docker run -it --rm
--net=host
-v "$HOME/.Xauthority:/root/.Xauthority:rw"
-e DISPLAY="$DISPLAY"
android-studio
[Note:不需要在Docker容器上安装xorg-server
。