当我在Docker项目中运行Docker -compose up时,它失败了,并显示以下消息:
启动userland代理时错误:监听tcp 0.0.0.0:3000:绑定:地址已在使用
netstat -pna | grep 3000
显示了这个:
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN -
我已经试过docker-compose down了,但没用。
当我在Docker项目中运行Docker -compose up时,它失败了,并显示以下消息:
启动userland代理时错误:监听tcp 0.0.0.0:3000:绑定:地址已在使用
netstat -pna | grep 3000
显示了这个:
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN -
我已经试过docker-compose down了,但没用。
当前回答
检查docker-compose。Yml,可能会出现端口被指定两次的情况。
version: '3'
services:
registry:
image: mysql:5.7
ports:
- "3306:3306" <--- remove either this line or next
- "127.0.0.1:3306:3306"
其他回答
使用8888端口的是Jupiter,我必须更改Jupiter笔记本的配置文件以在另一个端口上运行。
列出谁在使用该特定端口。 9 . sudo lsof -i -P -n | grep
你可以在~/.jupyter/jupyter_notebook_config.py中指定你想要Jupyter运行的端口,不注释/编辑下面的行:
c.NotebookApp.port = 9999
如果你没有jupyter_notebook_config.py,试着运行jupyter notebook——generate-config。有关Jupyter配置的更多详细信息,请参见此。
如果redis服务器作为一个服务启动,当你使用kill -9 <process_id>或sudo kill -9 ' sudo lsof -t -i:<port_number> '时,它会自动重启。在这种情况下,您需要使用以下命令停止redis服务。
Sudo服务redis-server停止
你可以用下面的命令杀死监听该端口的进程:
kill -9 $(lsof -t -i tcp:<port#>)
ex :
(lsof -t -i tcp:<port#>)
或者ubuntu:
Sudo lsof -t -i:8000 '
lsof的手册页:https://man7.org/linux/man-pages/man8/lsof.8.html
-9是硬杀,不检查任何deps。
(不相关,但可能有用,如果它的PORT 5000神秘)-罪魁祸首进程是由于Mac OS monterery。
端口5000通常用于为本地开发服务器提供服务。当更新到最新的macOS操作系统时,我无法将docker绑定到端口5000,因为它已经在使用中。(您可能会发现一条类似Port 5000已被使用的消息。)
通过运行lsof -i:5000,我发现使用端口的进程名为ControlCenter,这是一个原生macOS应用程序。如果这种情况发生在您身上,即使您使用暴力(并杀死)应用程序,它也会重新启动。在我的笔记本电脑中,lsof -i:5000返回控制中心正在被id为433的进程使用。我可以杀死所有-p 433,但macOS不断重新启动进程。
在这个端口上运行的进程原来是一个AirPlay服务器。你可以在
系统首选项›共享,取消检查AirPlay接收器以释放端口5000。
我试了所有的方法,包括关闭播放功能,但都没有效果。
最后,这个简单的解决方案奏效了。 在应用程序运行定义主机为0.0.0.0和端口5000显式,并bing一切工作
app.run(debug=True,host="0.0.0.0",port=5000)
现在运行应用程序为
docker run -p 5000:5000 <Image Name>
在您的情况下,是其他进程正在使用端口,正如评论中所指出的,sudo netstat -pna | grep 3000帮助您解决了这个问题。
而在其他情况下(我自己遇到过很多次),大多数情况下是相同的容器在其他实例中运行。在这种情况下,docker ps非常有用,因为我经常让相同的容器在其他目录中运行,然后在其他地方再次尝试运行,在那里使用相同的容器名称。
docker ps如何帮助我:
docker rm -f $(docker ps -aq)是我用来删除所有容器的简短命令。
编辑:增加如何docker ps帮助我。