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的评论