docker - 在 docker 容器中运行 ROS,并从同一 docker 网络(非主机网络)内的另一个 docker 容器运行 echo/pub

标签 docker ros docker-container docker-network

我正在一个 docker 容器中运行 ROS,并尝试通过 rosnode list 检查来自另一个容器的信息,这两个容器都位于同一自定义 docker 网络(非主机)下。

从 Docker 端来看,我非常确定两个容器可以相互通信,因为我已尝试从容器 2 中ping 容器 1 而不会丢失任何数据包。

容器 1 IP 为 172.22.0.2,容器 2 IP 为 172.22.0.3

我已将两个容器的配置设置如下:

container1 导出ROS_IP=172.22.0.2 导出ROS_MASTER_URL=http://172.22.0.2:11311/

container2 导出ROS_IP=172.22.0.3 导出ROS_MASTER_URL=http://172.22.0.2:11311/

之后,我开始在container1上运行roscore并在container2上输入命令rosnode list,但是container2显示错误消息:无法与master通信!

似乎即使我为两个容器设置了 ros master url,我仍然无法在容器之间共享相同的 roscore。

是否有任何内容可能丢失或我所做的事情不正确?

最佳答案

您需要的环境变量是ROS_MASTER_URI而不是ROS_MASTER_URL。将前者设置为主IP。

关于docker - 在 docker 容器中运行 ROS,并从同一 docker 网络(非主机网络)内的另一个 docker 容器运行 echo/pub,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70466371/

相关文章:

ros - 如果尚未运行,则启动节点

opencv - opencv类 “cvKalman”无法识别

database - 在PostgreSQL容器启动时创建多个数据库

linux - 如何在未配置的 Centos 7 Docker 上删除/安装 docker 镜像

windows - Windows 10 Docker容器客户端无法访问主机上的SQL

python - 为什么 Popen.stdout 只包含部分输出?

docker - 如何从一个 docker 容器执行命令到另一个

docker - 测量docker容器的执行时间

linux - Open vSwitch 无法在 Docker 上运行

docker - 如何在Dockerfile中使用for循环?