我有一个 websocket 服务器在我的主机上运行,监听端口 8080。在 docker 容器中,我部署了一个 websocket 客户端,使用以下代码段监听所述服务器:
connect_url="ws://0.0.0.0:80/"
Run Code Online (Sandbox Code Playgroud)
并且,将容器的端口 80 暴露/映射到主机的端口 8080。
Dockerfile:
EXPOSE 80
Run Code Online (Sandbox Code Playgroud)
当我运行容器时:
docker run -p 8080:80 <name>
Run Code Online (Sandbox Code Playgroud)
但我收到此错误:
docker:来自守护进程的错误响应:驱动程序在端点上编程外部连接失败:启动用户空间代理时出错:绑定 0.0.0.0:8080 失败:端口已分配。
现在我认为这个错误是因为主机中的服务器已经在使用端口8080,这就是无法映射的原因。
有了这些详细信息,我只想知道docker 容器内的 websocket 客户端如何连接到主机中的 websocket 服务器。
我认为问题是容器内的端口 80 已在使用,而不是主机上的 8080。尝试使用另一个端口来连接 docker 容器内的套接字80(例如 777 端口)。然后运行docker run -p 8080:777 <name>
顺便检查一下您的主机端口是否已在用户中:
sudo lsof -i tcp:8080
如果没有显示,则表示端口8080尚未使用。情况已在使用中。终止端口上的该进程8080:
sudo kill -9 your_PID_ID
然后重试
| 归档时间: |
|
| 查看次数: |
8921 次 |
| 最近记录: |