记录使用docker运行ros过程中遇到的问题

记录使用docker运行ros过程中遇到的问题

1、问题一:QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to ‘/tmp/runtime-root’
No protocol specified

请添加图片描述
解决:

export XDG_RUNTIME_DIR=/usr/lib/
export QT_QPA_PLATFORM='offscreen'

请添加图片描述
新问题:[FATAL] [1678250622.904302134]: Can’t open default or :0 display. Try setting DISPLAY environment variable.

xhost +
echo $DISPLAY
export DISPLAY=:1

请添加图片描述

请添加图片描述

最终重启docker容器,搞定

sudo systemctl restart docker

2、问题二:docker: Error response from daemon: Unknown runtime specified nvidia.
请添加图片描述
解决方式:修改/etc/docker/daemon.json文件配置内容

gedit /etc/docker/daemon.json

修改成以下内容:

{
    # 加速镜像地址
    "registry-mirrors": ["http://ip:8764"],
    # 私服地址
    "insecure-registries":["http://ip:8763"],
    "runtimes": {
        "nvidia": {
            "path": "/usr/bin/nvidia-container-runtime",
            "runtimeArgs": []
         }
    }
}

重启docker

sudo service docker stop
sudo service docker start

查看情况

docker info

请添加图片描述
3、问题三:
请添加图片描述
需要将/tmp/.docker.xauth文件夹删除,并创建/tmp/.docker.xauth文件

sudo rm -r /tmp/.docker.xauth
sudo touch /tmp/.docker.xauth

参卡链接:
https://blog.csdn.net/qq_40104261/article/details/118607235
https://blog.csdn.net/m0_48707860/article/details/127508479
https://blog.csdn.net/qq_35427589/article/details/124822628

### 如何在Docker运行ROS2 为了在Docker中成功运行ROS2,可以遵循一系列特定的操作流程。创建适合ROS2环境的Docker镜像是第一步,在此过程中需准备一个合适的`Dockerfile`文件用于定义所需的软件包和其他配置项[^1]。 对于希望基于官方支持版本构建自定义ROS2应用的情况,可参照如下简化版`Dockerfile`模板: ```dockerfile FROM osrf/ros:dashing-desktop # 设置工作目录 WORKDIR /ws # 安装额外依赖(如果有的话) RUN apt-get update && \ apt-get install -y python3-colcon-common-extensions # 复制源码到容器并编译 COPY src ./src RUN colcon build --symlink-install # 配置环境变量以便于启动节点 ENV PYTHONPATH=$PYTHONPATH:/ws/install/lib/python3.7/site-packages ``` 完成`Dockerfile`编写之后,通过执行命令行指令来构建对应的Docker镜像。假设当前路径下存在上述`Dockerfile`,则可以通过下面这条命令来进行镜像制作: ```bash docker build -t my_ros2_app . ``` 一旦拥有定制化的ROS2 Docker镜像后,便能够利用该镜像快速部署新的容器实例,并在其内部开展各种实验或开发活动。例如,要启动一个新的交互式shell会话,允许用户探索已安装好的ROS2功能特性,则应采用以下方式开启新容器: ```bash docker run -it --rm --net=host my_ros2_app /bin/bash ``` 值得注意的是,当涉及到图形界面的应用程序时,比如`turtlesim`模拟器,还需要特别处理X Window系统的访问权限问题以及网络设置,确保宿主机与容器之间能正常通信[^3]。这通常意味着要在启动容器前先确认两者间的IP地址分配情况,并相应调整防火墙策略等细节事项。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值