使用Docker的GUI

时间:2017-07-03 15:09:50

标签: docker ros

我试图在Docker中运行GUI并尝试关注以下链接。

http://wiki.ros.org/docker/Tutorials/GUI#The_safer_way

使用此链接,我尝试实现the_safer_way方法,但在我的MAC中收到以下错误。

Ps-MacBook-Pro:~ p$ docker run -it \
>     --user=$USER \
>     --env="DISPLAY" \
>     --volume="/etc/group:/etc/group:ro" \
>     --volume="/etc/passwd:/etc/passwd:ro" \
>     --volume="/etc/shadow:/etc/shadow:ro" \
>     --volume="/etc/sudoers.d:/etc/sudoers.d:ro" \
>     --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
>     osrf/ros:indigo-desktop-full \
>     rqt
docker: Error response from daemon: Mounts denied: 
The path /etc/sudoers.d
is not shared from OS X and is not known to Docker.
You can configure shared paths from Docker -> Preferences... -> File Sharing.
See https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.

2 个答案:

答案 0 :(得分:0)

您是否尝试过阅读https://docs.docker.com/docker-for-mac/osxfs/#namespaces

  

默认情况下,您可以共享/ Users /,/ Volumes /,/ private /和中的文件   / tmp直接。添加或删除导出的目录树   Docker,使用Docker首选项中的文件共享选项卡

答案 1 :(得分:0)

在MacOS上,通常没有X服务器,你需要在Linux系统上做一些事情,如Using GUI's with Docker所述。

文章Running GUI’s with Docker on Mac OS X有关于如何执行此操作的简要说明,而Bring Linux apps to the Mac Desktop with Docker有更全面的说明,但总结一下:

  • 安装socat,以便使用以下方法在运行图形应用程序的docker容器和OS X主机操作系统上的X window系统之间建立连接:
    > brew install socat
    > socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\"
    
  • 使用以下命令在OS X操作系统上安装Xquartz X Window系统
    > brew install xquartz
    
  • 退出,​​然后重新登录。
  • 打开Xquartz:
    > open -a Xquartz
    
  • X11首选项窗口中,选择安全标签,确保选中允许来自网络客户端的连接
  • 获取主机操作系统的IP地址:
    > ifconfig en0
    en0: 
    …
    inet 192.168.0.235 netmask 0xffffff00 broadcast 192.168.199.255
    …
    
  • 最后在运行docker容器时将DISPLAY环境变量设置为此IP地址,然后设置为:0
    > docker run -e DISPLAY=192.168.0.235:0 gns3/xeyes
    

来自BMitch的评论