Ubuntu 22使用Docker Compose时端口被docker-pr占用致容器启动失败
解决Docker Compose启动时docker-pr占用端口的问题
问题根源
docker-pr是Docker的端口转发进程,正常情况下容器停止后会自动释放端口,但出现这类问题大多是容器未正常退出,导致Docker网络命名空间残留,端口转发进程未被自动清理。
修复方案
1. 清理残留Docker资源
执行命令清理所有未使用的容器、网络、卷和镜像(确认无重要未备份资源后操作):
docker system prune -af
若仅需清理网络资源:
docker network prune -f
2. 强制清理残留容器
先查看所有容器(含已停止状态):
docker ps -a
找到与占用端口关联的容器,强制停止并删除:
docker rm -f <容器ID/名称>
3. 优化Docker Compose配置避免冲突
- 改用动态端口映射:将
docker-compose.yml中固定端口如ports: "8080:80"改为ports: "8080-8090:80",Docker会自动分配可用端口。 - 使用自定义隔离网络:在配置文件中添加专属网络,避免与其他容器网络冲突:
version: '3.8' services: your-service: # 其他服务配置 networks: - custom-net networks: custom-net: driver: bridge
4. 重启Docker服务
若上述方法无效,重启Docker彻底清理残留进程:
# Linux系统 sudo systemctl restart docker # macOS(Homebrew安装的Docker) brew services restart docker # Windows(PowerShell管理员模式) Restart-Service Docker
内容的提问来源于stack exchange,提问作者Jocelin Quéau
相关产品推荐
相关产品推荐

