Ubuntu下端口被占用问题

问题描述

曾经用docker部署过Nginx,用docker stop和docker rm命令停止并删除了容器。但是之后部署rancher的时候提示80端口被占用。

$ docker run -d --privileged --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher
fe8b473d8f5a855e1fe2fd8ba445affa4c2a8782b5c5af051240453044b7429a
docker: Error response from daemon: driver failed programming external connectivity on endpoint beautiful_wilson (db7dace3bb33ebaf0d42ee00f6f3d2eef2bd5b19dd0cce84b9c0ec3e9d35e49b): Error starting userland proxy: listen tcp4 0.0.0.0:80: bind: address already in use.

方法1 - lsof

lsof -i:端口ID
不是root的话,该命令什么反应都没有。

$ lsof -i:80   

要在前面填上sudo

$ sudo lsof -i:80
COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   1133  root    6u  IPv4  47894      0t0  TCP *:http (LISTEN)
nginx   1134 nginx    6u  IPv4  47894      0t0  TCP *:http (LISTEN)
nginx   1135 nginx    6u  IPv4  47894      0t0  TCP *:http (LISTEN)  

用PID杀死进程( 似乎只杀第一个user是root的就行。因为杀第二个的时候报 “ No such process ” )

$ sudo kill 1133   

再次用lsof的时候发现没有返回值了

$ sudo lsof -i:80   

这样就已经把80端口的进程杀掉了,运行rancher的时候不再报错

$ docker run -d --privileged --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher
70a423081911401342c7f6327c6f55fd903053dc5b88a2aa1f1cd5edbc35c564

方法2 - netstat

netstat -tanlp
会发现不是root的话80端口的PID/Program name一栏是“-” 。

$ netstat -tanlp
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      -                   
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      -                   
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      -                   
tcp        0      0 192.168.73.137:40264    34.107.221.82:80        TIME_WAIT   -                   
tcp        0      0 192.168.73.137:40260    34.107.221.82:80        TIME_WAIT   -                   
tcp        0      0 192.168.73.137:60804    52.36.14.43:443         ESTABLISHED 2127/firefox        
tcp6       0      0 ::1:631                 :::*                    LISTEN      -    

然后根据提示用sudo netstat -tanlp即可查看。再像方法1那样用sudo kill PID编号杀死进程即可

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值