将 docker 容器中的 websocket 客户端连接到主机中的 websocket 服务器

jay*_*yde 5 websocket docker

我有一个 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 服务器

Tru*_*ang 4

我认为问题是容器内的端口 80 已在使用,而不是主机上的 8080。尝试使用另一个端口来连接 docker 容器内的套接字80(例如 777 端口)。然后运行docker run -p 8080:777 <name>

顺便检查一下您的主机端口是否已在用户中: sudo lsof -i tcp:8080 如果没有显示,则表示端口8080尚未使用。情况已在使用中。终止端口上的该进程8080 sudo kill -9 your_PID_ID 然后重试