docker bind for port is already allocated
全栈老韩
全栈工程师,擅长iOS App开发、前端(vue、react、nuxt、小程序&Taro)开发、Flutter、React Native、后端(midwayjs、golang、express、koa)开发、docker容器、seo优化等。
Error response from daemon: driver failed programming external connectivity on endpoint blog_redis (27b921fbdad1c8a40929a3c16ce61c0623939f12e4c6eddaaac0e9d3ce2c298b): Bind for 0.0.0.0:6379 failed: port is already allocated

从问题报错来看,端口6379已经被其他程序占用了,所以容器的端口绑定失败了,所以解决问题的办法,那就是找出当前占用6379端口的程序,并且kill掉这个进程,让docker可以正常进行端口映射。
一、查看端口号对应的pid
terminal
lsof -i tcp:6379

从截图中看,确实有进程509占用了端口6379,而且是之前启动的redis-server在占用,说明docker之前使用后并没有释放掉这个端口监听。
二、kill进程
terminal
kill -9 507
执行上述命令后,重新docker restart容器,看是否能解决问题。
三、其他情况
1.如果是桌面端的docker软件,完全可以重新启动来解决。
2.如果是使用docker-compose.yml的场景下,可以先关闭掉所有容器,再使用up试试
terminal
docker-compose down
- 如果是容器之间的端口互斥,可以查看所有容器绑定的端口号是否有冲突的
terminal
docker ps -a
- 如果是运行laravel环境,可以尝试以下命令
terminal
valet stop
发布于2024-01-26 10:42:25
浏览量161·
暂无评论,快来发表第一条评论吧