当 Docker Compose 出现错误时,可以按照以下系统化的排查流程解决:
- 确认版本兼容性:
bash
docker --version && docker-compose --version
注意:新版本应使用 docker compose
(无横线)命令
bash
docker-compose config # 老版本
docker compose config # 新版本
▶ 端口冲突错误:
ERROR: for xxx Cannot start service xxx: Port is already allocated
bash
# 查找占用进程
sudo lsof -i :<端口号>
# 或停止所有冲突容器
docker stop $(docker ps -aq)
▶ 文件挂载问题:
ERROR: for xxx Cannot start service xxx: Mounts denied
bash
sudo setenforce 0
▶ 环境变量问题:
WARNING: The XXX variable is not set. Defaulting to a blank string.
.env
文件bash
docker compose --env-file=.env.prod up
详细日志输出:
docker compose --verbose up
单服务调试:
docker compose up <service_name>
容器内检查:
docker exec -it <container_name> sh
- [ ] YAML 文件缩进正确(必须使用空格) - [ ] 所有服务依赖项已满足 - [ ] 网络/卷配置无冲突 - [ ] 镜像标签存在且可拉取
# 卸载当前版本
sudo apt remove docker-compose
# 安装特定版本
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker compose down -v --rmi all # 删除容器、卷和镜像
docker system prune -a # 清理所有未使用对象
建议提供具体的错误信息,我可以给出更有针对性的解决方案。典型错误通常与:网络配置、权限问题、资源限制或服务依赖关系有关。