Ngo*_*ral 42 ubuntu bind docker ubuntu-14.04 docker-compose
当我docker-compose up在我的Docker项目中运行时,它会失败并显示以下消息:
Error starting userland proxy: listen tcp 0.0.0.0:3000: bind: address already in use
Run Code Online (Sandbox Code Playgroud)
netstat -pna | grep 3000
显示这个:
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN -
Run Code Online (Sandbox Code Playgroud)
我已经尝试过docker-compose down,但它没有帮助.
Bal*_*yan 66
您可以使用以下一个命令轻松终止侦听该端口的进程:
\nkill -9 $(lsof -t -i tcp:<port#>)\nRun Code Online (Sandbox Code Playgroud)\n前任 :
\n\n\n\n
kill -9 $(lsof -t -i tcp:<port#>)
或者对于 ubuntu:
\n\n\n\n
sudo kill -9 `sudo lsof -t -i:8000`
lsof 的手册页:https ://man7.org/linux/man-pages/man8/lsof.8.html
\n-9 表示硬杀,不检查任何部门。
\n(不相关,但如果其 PORT 5000 之谜可能会很有用) - 罪魁祸首是 Mac OS monterery。
\n端口 5000 通常用于为本地开发服务器提供服务。当更新到最新的 macOS 操作系统时,我无法将 docker 绑定到端口 5000,因为它已被使用。(您可能会发现一条类似于端口 5000 已在使用中的消息。)
\n通过运行 lsof -i :5000,我发现使用该端口的进程名为ControlCenter,这是一个本机 macOS 应用程序。如果这种情况发生在您身上,即使您使用强力(并杀死)应用程序,它也会自行重新启动。在我的笔记本电脑中,lsof -i :5000 返回控制中心正在被进程 id 433 使用。我可以执行killall -p 433,但 macOS 不断重新启动该进程。
\n在此端口上运行的进程是一个 AirPlay 服务器。您可以在以下位置停用它
\n系统偏好设置\xe2\x80\xba共享,并取消选中AirPlay接收器以释放端口5000。
\nAyu*_*hya 40
在您的情况下,正是使用该端口的其他一些进程,如评论中所示,sudo netstat -pna | grep 3000帮助您解决问题.
而在其他情况下(我自己多次遇到它),它主要是在其他一些实例上运行的同一个容器.在这种情况下docker ps非常有用,因为我经常在其他目录中运行相同的容器,然后尝试在其他地方再次运行,其中使用了相同的容器名称.
怎么docker ps帮助我: docker rm -f $(docker ps -aq)是一个简短的命令,我用它来删除所有容器.
编辑:添加了如何docker ps帮助我.
小智 27
我有同样的问题。我通过停止主机上的 Apache2 服务解决了这个问题。
Tom*_*iak 14
这对我有帮助:
docker-compose down
docker rm -fv $(docker ps -aq)
sudo lsof -i -P -n | grep <port number>
Run Code Online (Sandbox Code Playgroud)
然后:
kill -9 <process id>(macOS)或sudo kill <process id>(Linux)。
资料来源:用户Rub21发表的评论。
Nee*_*sal 12
对于 Linux/Unix:
使用以下命令简单搜索 linux 实用程序
netstat -nlp | grep 8888
Run Code Online (Sandbox Code Playgroud)
它将显示在此端口上运行的处理,然后使用该进程的 PID(在行中查找 PID)终止该进程。
kill PID
Run Code Online (Sandbox Code Playgroud)
Zek*_*rpo 12
我的 ubuntu 机器上运行着 apache。我用这个命令杀死了它!
sudo /etc/init.d/apache2 stop
Run Code Online (Sandbox Code Playgroud)
Ily*_*ich 11
这很可能是因为您已经在主机操作系统上运行 Web 服务器,因此它与 Docker 尝试启动的 Web 服务器发生冲突。
因此,在尝试其他方法之前先尝试一下这一行:
sudo service apache2 stop; sudo service nginx stop; sudo nginx -s stop;
小智 9
如果 redis 服务器作为服务启动,则当您使用kill -9 <process_id>或时,它将自行重新启动sudo kill -9 `sudo lsof -t -i:<port_number>` 。在这种情况下,您需要使用以下命令停止 redis 服务。
sudo service redis-server stop
在某些情况下,在停止容器或终止进程之前对问题执行更深入的调试至关重要。
考虑遵循以下清单:
1)检查您当前的 docker compose 环境
Run docker-compose ps。
如果 port 正在被另一个容器使用,请使用docker-compose stop <service-name-in-compose-file>将其停止或将其替换stop为rm。
2)检查您的当前工作区外运行的容器
运行docker ps,看看你的主机下运行的所有容器的列表。
如果您发现该端口正在被另一个容器使用,您可以使用docker stop <container-id>.
(*) 因为您不在原始compose环境的范围内- 首先使用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
Run Code Online (Sandbox Code Playgroud)
(*) 您还可以使用lsof命令,该命令主要用于检索有关各个进程打开的文件的信息(我建议在此netstat之前运行)。
因此,如果输出高于PIDis 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
Run Code Online (Sandbox Code Playgroud)
并查看父进程的 ID ( PPID) 和执行命令。
您还可以运行:$ pstree -s <PID>以可视化显示进程及其相关进程。
在我们的例子中,我们可以看到该进程可能是一个守护进程(PPID 为 1) - 在这种情况下,请考虑运行:
A)$ cat /proc/<PID>/status以获得有关该进程的更深入信息,例如该进程产生的线程数,它的能力等'。
B)$ systemctl status <PID>为了查看导致创建特定进程的systemd单元。如果服务不是关键的 - 您可以停止并禁用该服务。
4)重新启动码头工人服务
运行:sudo service docker restart。
5)您已经达到了这一点,并且..
仅当它不会将您的系统置于危险之中时 - 考虑重新启动服务器。
小智 7
当我尝试启动新容器时,出现以下错误 -
listen tcp 0.0.0.0:8080: bind: address already in use.
要检查端口上正在运行哪个进程8080,请运行以下命令:
netstat -tulnp | grep 8080
我得到下面的输出
[root@ip-112-x6x-2x-xxx.xxxxx.compute.internal (aws_main) ~]# netstat -tulnp | grep 8080 tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN **12749**/java [root@ip-112-x6x-2x-xxx.xxxxx.compute.internal (aws_main) ~]#
跑步
kill -9 12749
然后尝试重新启动它应该可以工作的容器
小智 6
就我而言,它是
启动用户空间代理时出错:listen tcp 0.0.0.0:9000: bind: address already in use
而我所需要的只是关闭 phpstorm 中的调试监听 
检查一下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"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
79742 次 |
| 最近记录: |