当我在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了,但没用。
当前回答
For Linux / Unix:
简单搜索linux实用程序使用以下命令
netstat -nlp | grep 8888
它将显示在该端口上运行的进程,然后使用该进程的PID(在行中查找PID)杀死该进程。
kill PID
其他回答
首先,确定在特定端口中运行的是哪个服务。在您的示例中,您已经使用了端口号3000。
netstat -aof | findstr :3000
现在停止正在特定端口上运行的进程
lsof -i tcp:3000
如果你有同样的问题,并且是在Windows上,只是一个旁注:
在我的情况下,进程在我的方式只是grafana-server.exe。因为我首先下载了二进制版本并双击可执行文件,现在它作为一个服务由用户SYSTEM启动,我不能taskkill(没有权限)
我必须进入Windows的“服务管理器”,搜索“Grafana”服务,并停止它。此后,端口3000不再被占用。
希望这能有所帮助。
我解决了这个sudo服务redis-server停止
在您的情况下,是其他进程正在使用端口,正如评论中所指出的,sudo netstat -pna | grep 3000帮助您解决了这个问题。
而在其他情况下(我自己遇到过很多次),大多数情况下是相同的容器在其他实例中运行。在这种情况下,docker ps非常有用,因为我经常让相同的容器在其他目录中运行,然后在其他地方再次尝试运行,在那里使用相同的容器名称。
docker ps如何帮助我:
docker rm -f $(docker ps -aq)是我用来删除所有容器的简短命令。
编辑:增加如何docker ps帮助我。
在某些情况下,在停止容器或杀死进程之前对问题执行更深入的调试是至关重要的。
考虑以下清单:
1)检查当前的docker编写环境 执行docker-compose ps命令,如果端口正在被其他容器使用,则使用docker-compose stop <service-name-in- composition -file>命令停止端口,或者使用rm命令删除端口。
2)检查当前工作区外运行的容器 运行docker ps查看主机下运行的所有容器的列表。 如果您发现该端口正在被其他容器使用,您可以使用docker stop <container-id>来停止它。 (*)因为你不在原始组合环境的范围内——首先使用docker inspect来收集关于你即将停止的容器的更多信息是一个很好的做法。
3)检查端口是否被主机上的其他进程占用 例如,端口为6379,运行如下命令:
$ sudo netstat -ltnp | grep ':6379'
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 915/redis-server 12
tcp6 0 0 ::1:6379 :::* LISTEN 915/redis-server 12
(*)您也可以使用lsof命令,该命令主要用于检索各种进程打开的文件信息(我建议在此之前运行netstat)。
因此,在输出以上的情况下,PID为915。现在你可以运行:
$ ps j 915
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
1 915 915 915 ? -1 Ssl 123 0:11 /usr/bin/redis-server 127.0.0.1:6379
并查看父进程的ID (PPID)和执行命令。 您也可以执行:$ pstrree -s <PID>命令来可视化显示该进程及其相关进程。
在我们的例子中,我们可以看到进程可能是一个守护进程(PPID是1)-在这种情况下,考虑运行:a) $ cat /proc/<PID>/status,以获得关于进程的更深入的信息,如进程所产生的线程数,它的能力等。 B) $ systemctl status <PID>,以便查看导致特定进程创建的systemd单元。如果该服务不是紧急的—您可以停止和禁用该服务。
4)重启Docker服务 执行命令sudo service docker restart。
5)你到了这一步,然后… 只有在不会将您的系统置于危险之中时,才考虑重新启动服务器。