<返回更多

Mac上,Docker运行GUI应用

2020-12-31    
加入收藏

mac上,Docker运行GUI应用

 

用 socat 来解决容器和 Mac 主机 GUI 的通信

 

安装socat

 

brew install socat

 

安装xquartz

 

brew cask install xquartz

 

这过程中还需要输入管理员密码,安装完成后重启

 

查看$DISPLAY变量

 

重启后,查看$DISPLAY变量:

 

virhuiaivirhuiai@192 ~ % echo $DISPLAY
/private/tmp/com.Apple.launchd.xFpju7k1dF/org.macosforge.xquartz:0

 

xquartz 配置

 

选中打勾的“允许从网络客户端连接”

Mac上,Docker运行GUI应用

 

配置完后,先关闭 Xquartz

 

运行socat

 

socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:"$DISPLAY"

 

注意不要中断它,重新开启 Xquartz。

 

查看此时Mac的 IP 地址

 

en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    options=400<CHANNEL_IO>
    ether f0:18:98:2b:58:0f 
    inet6 fe80::cf9:444b:1405:e775%en0 prefixlen 64 secured scopeid 0x6 
    inet 192.168.0.101 netmask 0xffffff00 broadcast 192.168.0.255
    nd6 options=201<PERFORMNUD,DAD>
    media: autoselect
    status: active

 

准备试验镜像

 

docker pull ubuntu:18.04
docker run --rm --name xarclock -i -t ubuntu:18.04 bash
# 进入容器后,安装xarclock
apt-get update
apt-get install xarclock

 

用commit打包(Dockerfile的方式读者也可以尝试下)

 

docker container commit xarclock xarclock:ubuntu-18.04

 

试验

 

docker run -e DISPLAY=192.168.0.101:0 xarclock:ubuntu-18.04 xarclock

 

如图所示,已经在mac上显示出来了

Mac上,Docker运行GUI应用

 

其中ip地址可以用shell命令的方式直接写到run命令中,有兴趣的可以尝试下,这种方式我在评论也留言了。

 

Dockerfile文件

 

上面的生成镜像的要用Dockerfile文件也可以 ,Dockerfile文件内容如下:

 

FROM ubuntu:18.04
RUN apt-get update &&  apt-get install xarclock

 

生成镜像

 

% docker build -t xarclock:ubuntu-18.04 .

 

注意最后的点.不要少了

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>