MAC的docker中运行GUI程序
如何在MAC的docker中运行GUI程序
1、下载docker
2、下载XQuartz
3、设置XQuqrtz参数,“允许从网络连接连接”
4、重新启动XQurtz 2.7.11( MacOS 10.15版本,需要2.7版本支持)
5、运行xhost并允许本机连接(在终端输入如下两行命令)
```
export IP=$(ifconfig en0 | grep inet | awk '$1=="inet" {print $2}')
xhost + $IP
```
5.5、如果出现xhost失败:xhost: unable to open display “”,尝试重启电脑(还是不行就没办法了)
6、执行docker,run命令或者exec命令都可以(-e DISPLAY=$IP:0参数是必须的,-it可选,具体命令请另行查找),例:下图
docker exec -it -e DISPLAY=$IP:0 containerName /bin/bash
————————————————
版权声明:本文为CSDN博主「whu_swh」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40037872/article/details/103248552
#!/bin/bash
# -----------------------------------------------------------------
# FileName: conf.cnf
# Date: 2020-01-09
# Author: jiftle
# Description:
# -----------------------------------------------------------------
DockerKey="dev-env"
DockerVer="latest"
# ------- 处理GUI显示的问题,原理:x11共享 -------
IP=$(ifconfig en0 | grep inet | awk '$1=="inet" {print $2}')
#!/bin/bash
# -----------------------------------------------------------------
# FileName: exec.sh
# Date: 2020-01-09
# Author: jiftle
# Description:
# -----------------------------------------------------------------
. ./conf.cnf
echo " |--> 当前主机IP: $IP"
xhost + $IP
# docker exec -it ${DockerKey} bash
docker exec -it -e DISPLAY=$IP:0 dev-env bash
#!/bin/bash
# -----------------------------------------------------------------
# FileName: run.sh
# Date: 2020-01-09
# Author: jiftle
# Description:
# -----------------------------------------------------------------
. ./conf.cnf
echo " |--> 当前主机IP: $IP"
# --------------- 定义变量 ------------------
GitPath="${HOME}/tg-git"
HostIp="$IP"
echo "------------- 运行[${DockerKey}:${DockerVer}]镜像的容器 ------------"
echo "---> 开始启动[${DockerKey}:${DockerVer}] Docker"
# -e GDK_SCALE \
# -e GDK_DPI_SCALE \
# ----------- 运行容器 ------------
docker run -itd \
`# 注释请忽略,----------- 设置名称 -------------` \
--name="${DockerKey}" \
`# 注释请忽略,----------- 工作目录映射 -------------` \
-w /root `# 默认工作目录` \
-v ${HOME}:/home/john `# 默认工作目录,映射` \
-v ${GitPath}:/home/john/git `# git仓库目录` \
`# 注释请忽略,----------- 用户密钥 -------------` \
-v ${HOME}/.ssh:/root/.ssh `# .ssh密钥` \
`# 注释请忽略,----------- 端口映射 -------------` \
-p 8022:22 `# ssh端口` \
-p 8001:8001 `# 日志仓库,预览服务` \
-p 8080:8080 `# web程序调试端口` \
-h "${DockerKey}" `# 机器名` \
--restart=always `# 自启动,容易导致挂载的分区,晚于docker` \
`# 注释请忽略,----------- 图形界面 -------------` \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY=${HostIp}:0 \
`# 镜像名` \
${DockerKey}:${DockerVer}
echo "---> 启动[${DockerKey}:${DockerVer}] Docker完毕"
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
2019-05-17 maven install的时候把源码一起放到仓库
2019-05-17 eclipse手动添加本地jar包到本地maven仓库
2019-05-17 JAVA_SWT 事件的四种写法
2019-05-17 java匿名内部类new(){}
2017-05-17 gcc 编译动态库和静态库
2017-05-17 C运行库和VC对应关系