鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    雷达驱动测试

    已定时 已固定 已锁定 已移动
    FishBot二驱机器人
    雷达板驱动 二驱机器人
    3
    3
    192
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 8
      862524030 年度VIP
      最后由 编辑

      在终端输入:

      xhost + && sudo docker run  -it --rm  -v /dev:/dev -v /dev/shm:/dev/shm --privileged  -v /tmp/.X11-unix:/tmp/.X11-unix --device /dev/snd -e DISPLAY=unix$DISPLAY -p 8889:8888 registry.cn-hangzhou.aliyuncs.com/fishros/fishbot_laser
      access control disabled, clients can connect from any host
      
      

      报错:

      Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/fishros/fishbot_laser:latest
      docker: Error response from daemon: failed to set up container networking: driver failed programming external connectivity on endpoint sleepy_panini (d256accacaa45aa664bebd0a9921aca3071b034f67aeab3421e12b9fb866f6fe): failed to bind host port for 0.0.0.0:8889:172.17.0.2:8888/tcp: address already in use
      
      Run 'docker run --help' for more information
      
      小鱼小 1 条回复 最后回复 回复 引用 0
      • 小伊小
        机器人小伊
        最后由 编辑

        报错信息显示 Docker 在尝试绑定端口 8889 时遇到了问题,因为该端口已经被其他进程占用。具体来说,错误信息指出:

        failed to bind host port for 0.0.0.0:8889:172.17.0.2:8888/tcp: address already in use
        

        这意味着端口 8889 在你的主机上已经被其他应用程序或服务使用了。解决这个问题的方法有几种:

        1. 更改 Docker 容器的端口映射:
          你可以更改 Docker 命令中的端口映射部分,使用一个未被占用的端口。例如,如果你想将容器内的 8888 端口映射到主机的另一个端口(比如 9999),你可以修改命令如下:

          xhost + && sudo docker run -it --rm -v /dev:/dev -v /dev/shm:/dev/shm --privileged -v /tmp/.X11-unix:/tmp/.X11-unix --device /dev/snd -e DISPLAY=unix$DISPLAY -p 9999:8888 registry.cn-hangzhou.aliyuncs.com/fishros/fishbot_laser
          
        2. 查找并停止占用端口的进程:
          如果你需要使用 8889 端口,你可以查找哪个进程正在使用该端口,并考虑停止该进程。在 Linux 上,你可以使用以下命令来查找占用端口的进程:

          sudo lsof -i :8889
          

          或者

          sudo netstat -tulpn | grep :8889
          

          这些命令会显示使用该端口的进程的详细信息。一旦你知道了哪个进程占用了端口,你可以决定是否停止它:

          sudo kill -9 <PID>
          

          其中 <PID> 是从上述命令中获取的进程 ID。

        3. 检查 Docker 容器是否已在使用该端口:
          有时候,即使你停止了 Docker 容器,端口也可能没有被释放。你可以列出所有正在运行的 Docker 容器,看看是否有任何容器仍然在使用 8889 端口:

          sudo docker ps -a
          

          如果发现有容器在使用该端口,你可以停止并移除该容器:

          sudo docker stop <container_id>
          sudo docker rm <container_id>
          

        选择适合你的方法来解决端口冲突问题。如果你不确定哪个端口适合使用,通常选择一个较高的、不常用的端口号(如 9000 以上)是一个不错的选择。


        以上为生成回答,仅供参考~

        我是小伊,已接入ChatGpt,所有回复,仅供参考~

        1 条回复 最后回复 回复 引用 0
        • 小鱼小
          小鱼 技术大佬 @862524030
          最后由 编辑

          @862524030 小伊的回答是正确的

          新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

          1 条回复 最后回复 回复 引用 0
          • 第一个帖子
            最后一个帖子
          皖ICP备16016415号-7
          Powered by NodeBB | 鱼香ROS