在已有Laravel 10项目中安装运行Laravel Sail失败的问题排查
问题诊断与解决:Laravel Sail 提示“Docker is not running”但Docker服务正常运行
可能的原因
- 当前用户无Docker操作权限:Docker服务处于运行状态,但当前登录用户未加入
docker用户组,导致无法访问Docker守护进程,Sail因此误判Docker未运行。 - Docker上下文配置异常:Docker的上下文未设置为默认值,Sail无法定位到正确的Docker运行环境。
- 项目Sail配置文件异常:
sail:install生成的docker-compose.yml或.env配置有误,导致Sail无法正常调用Docker。 - Sail与Docker版本不兼容:Docker版本过低,与Laravel Sail v1.26存在兼容性问题。
对应解决方法
1. 修复用户Docker权限
- 执行
groups命令,检查当前用户是否在docker组内。 - 若不在,添加用户到
docker组:sudo usermod -aG docker $USER - 退出当前终端并重新登录(或执行
newgrp docker临时生效),再尝试运行./vendor/bin/sail up。
2. 重置Docker上下文
- 查看当前Docker上下文:
docker context ls - 确保
default上下文处于active状态,若不是则切换:docker context use default - 重新启动Sail。
3. 检查并修复项目配置
- 确认项目根目录下存在
docker-compose.yml,且文件包含mysql服务的配置块(由sail:install生成)。 - 检查
.env文件,确保DB_CONNECTION=mysql、DB_HOST=mysql等Sail相关环境变量已正确配置。 - 若配置文件损坏,可重新执行
php artisan sail:install(注意备份现有配置文件)。
4. 验证并升级Docker版本
- 查看Docker版本:
docker --version - Laravel Sail v1.26要求Docker版本至少为20.10.x,若版本过低,升级Docker至最新稳定版后重启服务,再尝试启动Sail。
额外测试方案
若上述方法无效,可直接在项目根目录执行docker-compose up:
- 若该命令也报错,说明问题出在Docker环境本身,需排查Docker的守护进程配置或系统权限。
- 若该命令能正常启动容器,说明Sail脚本存在异常,可重新安装Sail:
composer remove laravel/sail --dev composer require laravel/sail --dev php artisan sail:install
内容的提问来源于stack exchange,提问作者Petro Gromovo
相关产品推荐
相关产品推荐

