docker相关问题

docker环境下无法开启rviz等图形界面相关程序

  1. 情况描述:
    创建docker时已经授权.Xauthority , DISPLAY , 但是docker环境里面仍然无法使用rviz的图形界面. 报错如下 :
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
No protocol specified
qt.qpa.screen: QXcbConnection: Could not connect to display :1
Could not connect to any X display.
  1. 原因分析及解决方法:
    建立容器时已经进行授权和分配, 因此怀疑是权限问题.
    另起一个terminal, 直接输入
xhost +local:docker

重新在docker下启动rviz即可.

参考:
github

docker容器创建时没有设置--net=host导致无法连接本地机器

  1. 情况描述
    创建docker容器时没有加上--net=host或者--network host, 那么容器创建后默认会连接在bridge网络上, 这时候如果使用ros将没有办法与主机进行 rostopic 的信息交换, 需要将network重新设置才可以.
    网上也有部分提到可以重新创建容器来实现更改网络模式, 但是好不容易搭起来的容器不想删除也可以参考以下方式 (在自己电脑上验证了, 不代表所有的情况都能成功)
  2. 原因分析及解决方法:
    创建容器时没有加入相应的选项, 那么在特定的配置文件里面修改就可以更改网络模式了.
    首先关闭docker服务
service docker stop

然后使用超级用户进入容器的配置文件夹

cd /var/lib/docker/containers/{container_id}

需要进行修改的有 config.v2.json 、hostconfig.json

vim config.v2.json    #  还有hostconfig.json

其中, config.v2.json里面需要修改的是 "Config" 里面的 "Hostname", 需要改为主机名 (就是打开cmd, 用户名@{主机名}, 后面的那一串). 后面的 "Networks" 的第一项需要把 bridge 改成 host.

hostconfig.json 里面需要把 "NetWorkMode" 改成 host.

hostname 和 hosts 文件好像是在运行容器时会重新创建, 其中 hostname 保存的是主机名, hosts 保存的是ip地址, 如有问题也可以在这地方查看一下.

修改完之后就可以重新打开docker服务以及container进行查看.
部分参考:
https://blog.csdn.net/zhuocailing3390/article/details/123080331

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容