docker環(huán)境下無法開啟rviz等圖形界面相關(guān)程序
- 情況描述:
創(chuàng)建docker時(shí)已經(jīng)授權(quán).Xauthority
,DISPLAY
, 但是docker環(huán)境里面仍然無法使用rviz的圖形界面. 報(bào)錯(cuò)如下 :
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.
- 原因分析及解決方法:
建立容器時(shí)已經(jīng)進(jìn)行授權(quán)和分配, 因此懷疑是權(quán)限問題.
另起一個(gè)terminal, 直接輸入
xhost +local:docker
重新在docker下啟動(dòng)rviz即可.
參考:
github
docker容器創(chuàng)建時(shí)沒有設(shè)置--net=host導(dǎo)致無法連接本地機(jī)器
- 情況描述
創(chuàng)建docker容器時(shí)沒有加上--net=host
或者--network host
, 那么容器創(chuàng)建后默認(rèn)會(huì)連接在bridge網(wǎng)絡(luò)上, 這時(shí)候如果使用ros將沒有辦法與主機(jī)進(jìn)行 rostopic 的信息交換, 需要將network重新設(shè)置才可以.
網(wǎng)上也有部分提到可以重新創(chuàng)建容器來實(shí)現(xiàn)更改網(wǎng)絡(luò)模式, 但是好不容易搭起來的容器不想刪除也可以參考以下方式 (在自己電腦上驗(yàn)證了, 不代表所有的情況都能成功) - 原因分析及解決方法:
創(chuàng)建容器時(shí)沒有加入相應(yīng)的選項(xiàng), 那么在特定的配置文件里面修改就可以更改網(wǎng)絡(luò)模式了.
首先關(guān)閉docker服務(wù)
service docker stop
然后使用超級用戶進(jìn)入容器的配置文件夾
cd /var/lib/docker/containers/{container_id}
需要進(jìn)行修改的有 config.v2.json 脯丝、hostconfig.json
vim config.v2.json # 還有hostconfig.json
其中, config.v2.json里面需要修改的是 "Config" 里面的 "Hostname", 需要改為主機(jī)名 (就是打開cmd, 用戶名@{主機(jī)名}, 后面的那一串). 后面的 "Networks" 的第一項(xiàng)需要把 bridge 改成 host.
hostconfig.json 里面需要把 "NetWorkMode" 改成 host.
hostname 和 hosts 文件好像是在運(yùn)行容器時(shí)會(huì)重新創(chuàng)建, 其中 hostname 保存的是主機(jī)名, hosts 保存的是ip地址, 如有問題也可以在這地方查看一下.
修改完之后就可以重新打開docker服務(wù)以及container進(jìn)行查看.
部分參考:
https://blog.csdn.net/zhuocailing3390/article/details/123080331