0.环境说明
Ubuntu 16.04
docker 19.03.12
因为要在docker中用pygame,要用到显示器,这个时候需要解决这个Docker “可视化”的问题。
原理简介
原理上可以把docker镜像看做一台没配显示器的电脑,程序可以运行,但是没地方显示。
而linux目前的主流图像界面服务X11又支持 客户端/服务端(Client/Server)的工作模式
只要在容器启动的时候,将 『unix:端口』或『主机名:端口』共享给docker,docker 就可以通过端口找到显示输出的地方,和linux系统共用显示。
具体操作
1)首先,在主系统里运行
$ sudo apt-get install x11-xserver-utils
$ xhost +
这两句的作用是开放权限,允许所有用户,当然包括docker,访问X11 的显示接口。
2)在启动docker容器时,添加选项如下:
-v /tmp/.X11-unix:/tmp/.X11-unix \ #共享本地unix端口
-e DISPLAY=unix$DISPLAY \ #修改环境变量DISPLAY
-e GDK_SCALE \ #我觉得这两个是与显示效果相关的环境变量,没有细究
-e GDK_DPI_SCALE \
最终的启动命令就会长类似这样
$ docker run -it -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY -e GDK_SCALE -e GDK_DPI_SCALE predator_prey:latest /bin/bash