graphics用户界面的Docker

我试图在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. 

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

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

在通常不具有X服务器的MacOS上,您必须在Linux系统上做更多的工作,正如使用GUI和Docker所描述的那样。

在Mac OS X上使用Docker运行GUI的文章有关于如何做到这一点的简要说明,同时使用Docker将Linux应用程序带到Mac桌面有更全面的说明,但总结如下:

  • 安装socat以便您可以在运行graphics应用程序的Docker容器和OS X主机操作系统上的X窗口系统之间build立连接,使用:
     > 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首选项窗口上,select安全选项卡并确保来自networking客户端允许连接被打勾。
  • 获取主机操作系统的IP地址:
     > ifconfig en0 en0: … inet 192.168.0.235 netmask 0xffffff00 broadcast 192.168.199.255 … 
  • 最后,将DISPLAY环境variables设置为此IP地址,然后在运行docker容器时将其设置为:0
     > docker run -e DISPLAY=192.168.0.235:0 gns3/xeyes 

来自BMitch的评论