天天看点

【日常问题解决】docker 映射端口出错

一、问题

docker run -itd --name hyperlpr_fastapi -p8668:8668 hyperlpr_fastapi:v1.0
           

运行docker 镜像 出现端口绑定已经使用的问题:

docker: Error response from daemon: driver failed programming external connectivity on endpoint hyperlpr_fastapi (646d9ef9ad18cab0a5dd981d8fd2280f010d62c2b7c06dd1c17370fceeebfe86): Error starting userland proxy: listen tcp 0.0.0.0:8668: bind: address already in use.
           

二、解决方法

切换到root账户,netstat -nap 查看程序运行的pid,查找8668端口,可以发现确实被占用了,记住PID

当然也可以直接找到某个端口是否被占用,命令:netstat -nap | grep 8668

su root # 切换到root账户
netstat -nap | grep 8668 # 查看pid
tcp        0      0 0.0.0.0:8668            0.0.0.0:*               LISTEN      2901/python     
tcp   540778      0 127.0.0.1:54836         127.0.0.1:8668          CLOSE_WAIT  24527/python    
tcp   540778      0 127.0.0.1:54740         127.0.0.1:8668          CLOSE_WAIT  24527/python    
tcp   540778      0 127.0.0.1:54820         127.0.0.1:8668          CLOSE_WAIT  24527/python    
tcp   540778      0 127.0.0.1:54792         127.0.0.1:8668          CLOSE_WAIT  24527/python    
tcp   540778      0 127.0.0.1:54742         127.0.0.1:8668          CLOSE_WAIT  24527/python    
tcp   540778      0 127.0.0.1:54766         127.0.0.1:8668          CLOSE_WAIT  24527/python    
           

kill PID,杀死该进程 ,这里是kill 0

kill -9 2901 # 杀死程序
su u260517 # 切换到普通用户