Docker本身的工作模式是命令行的docker 容器与宿主机,而且假如运行在docker中的应用须要显示图形界面怎么能实现呢?

可以通过在宿主机安装xserverlinux删除文件夹,将docker容器视为顾客端,通过网路或挂载的方法就可以实现将须要显示的图象显示在宿主机显示器。

1.网路方法(此方法也可以用于两主机间)

A.在宿主机
查看宿主机IP
$ ifconfig                          ##假设为xxx.xxx.xxx.xx
查看当前显示的环境变量值
$ echo $DISPLAY   (要在显示屏查看,其他ssh终端不行)  ##假设为:0
或通过socket文件分析:
$ ll /tmp/.X11-unix/                            ##假设为X0= ---> :0
安装xserver

docker宿主机是什么意思_docker 容器与宿主机_容器和宿主机

$ sudo apt install x11-xserver-utils $ sudo vim /etc/lightdm/lightdm.conf 增加许可网络连接 [SeatDefaults] xserver-allow-tcp=true 重启xserver $ sudo systemctl restart lightdm 许可所有用户都可访问xserver xhost +

docker 容器与宿主机_容器和宿主机_docker宿主机是什么意思

B.在docker 容器内 # export DISPLAY=xxx.xxx.xxx.xx:0 注意:环境变量设置需要每次进docker设置,可以写在:/etc/bash.bashrc 文件中,避免每次进终端时设置

2.挂载形式

挂载形式是在使用image创建docker容器时docker 容器与宿主机,通过-v参数设置docker内外路径挂载linux查看硬件信息,使显示xserver设备的socket文件在docker内也可以访问。并通过-e参数设置docker内的DISPLAY参数和宿主机一致。

A.在宿主机
查看宿主机IP
$ ifconfig                          ##假设为xxx.xxx.xxx.xx
查看当前显示的环境变量值
$ echo $DISPLAY   (要在显示屏查看,其他ssh终端不行)  ##假设为:0
或通过socket文件分析:
$ ll /tmp/.X11-unix/                            ##假设为X0= ---> :0
安装xserver
$ sudo apt install x11-xserver-utils
许可所有用户都可访问xserver
xhost +
B.在docker 容器创建时
-v /tmp/.X11-unix:/tmp/.X11-unix
-e DISPLAY=:0
例如:
docker run -itd --name 容器名 -h 容器主机名 --privileged 
           -v /tmp/.X11-unix:/tmp/.X11-unix  
           -e DISPLAY=:0 镜像名或id /bin/bash

3.验证:

容器和宿主机_docker宿主机是什么意思_docker 容器与宿主机

使用带有界面功能的时钟软件尝试

在docker容器中:
$ sudo apt-get install xarclock
$ xarclock
应该可以看到xserver端显示器显示时钟界面。

参考文章:

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复