我的主机中运行着一个Websocket服务器,监听端口8080。 在一个Docker容器中,我使用以下代码片段部署了一个Websocket客户端来监听所述服务器:
connect_url="ws://0.0.0.0:80/"
,然后将容器的端口80暴露/映射到主机的端口8080。
Dockerfile:
EXPOSE 80
当我运行容器时:
docker run -p 8080:80 <name>
但是我遇到了这个错误:
docker:来自守护程序的错误响应:驱动程序无法在端点上编程外部连接:启动用户级代理时出错:与0.0.0.0:8080绑定失败:端口已分配。
现在,我认为此错误是因为主机中的服务器已经在使用端口8080,因此无法对其进行映射。
给出这些详细信息后,我只是想知道我的docker容器中的websocket客户端如何连接到主机中的websocket服务器。
答案 0 :(得分:1)
我认为问题是容器内的端口80已在使用中,而不是主机上的8080。尝试使用另一个端口代替docker容器内的80
连接套接字(例如777端口)。然后运行docker run -p 8080:777 <name>
顺便说一句,检查您的主机端口是否已经在用户中:
sudo lsof -i tcp:8080
如果未显示,则表示端口8080
尚未使用。如果已经在使用中。在端口8080
上终止该进程:
sudo kill -9 your_PID_ID
然后重试