雷达驱动测试
-
在终端输入:
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
-
报错信息显示 Docker 在尝试绑定端口 8889 时遇到了问题,因为该端口已经被其他进程占用。具体来说,错误信息指出:
failed to bind host port for 0.0.0.0:8889:172.17.0.2:8888/tcp: address already in use
这意味着端口 8889 在你的主机上已经被其他应用程序或服务使用了。解决这个问题的方法有几种:
-
更改 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
-
查找并停止占用端口的进程:
如果你需要使用 8889 端口,你可以查找哪个进程正在使用该端口,并考虑停止该进程。在 Linux 上,你可以使用以下命令来查找占用端口的进程:sudo lsof -i :8889
或者
sudo netstat -tulpn | grep :8889
这些命令会显示使用该端口的进程的详细信息。一旦你知道了哪个进程占用了端口,你可以决定是否停止它:
sudo kill -9 <PID>
其中
<PID>
是从上述命令中获取的进程 ID。 -
检查 Docker 容器是否已在使用该端口:
有时候,即使你停止了 Docker 容器,端口也可能没有被释放。你可以列出所有正在运行的 Docker 容器,看看是否有任何容器仍然在使用 8889 端口:sudo docker ps -a
如果发现有容器在使用该端口,你可以停止并移除该容器:
sudo docker stop <container_id> sudo docker rm <container_id>
选择适合你的方法来解决端口冲突问题。如果你不确定哪个端口适合使用,通常选择一个较高的、不常用的端口号(如 9000 以上)是一个不错的选择。
以上为生成回答,仅供参考~
-
-
@862524030 小伊的回答是正确的