Windows下WSL2中Docker Daemon无法运行的排查求助
排查WSL2 Ubuntu中Docker Daemon无法启动的步骤
确认WSL2环境配置
- 检查当前WSL版本:
wsl -l -v,确保你的Ubuntu发行版对应的VERSION是2,若为1则执行wsl --set-version <Ubuntu发行版名称> 2切换 - 验证Windows虚拟化已启用:打开任务管理器→性能→CPU,确认“虚拟化已启用”;若未开启,进入BIOS开启Intel VT-x(AMD平台为AMD-V)
- 检查WSL内核版本:
uname -r,Docker要求内核版本≥5.4,版本过低则执行wsl --update更新
- 检查当前WSL版本:
查看Docker服务报错日志
- 实时查看systemd下Docker服务的日志:
sudo journalctl -u docker.service -f,启动服务后观察具体错误信息(比如存储驱动、依赖、权限问题) - 手动执行
sudo dockerd时,重点记录终端输出的报错内容,这是定位问题的核心依据
- 实时查看systemd下Docker服务的日志:
检查Docker存储驱动配置
- 查看
/etc/docker/daemon.json是否存在,若不存在则创建并添加以下内容:{ "storage-driver": "overlay2" } - 重启Docker服务:
sudo systemctl restart docker - 检查
/var/lib/docker目录权限:ls -ld /var/lib/docker,确保所有者为root:root,权限为700,若不符则执行sudo chown -R root:root /var/lib/docker && sudo chmod -R 700 /var/lib/docker
- 查看
排查Docker Desktop残留冲突
- 检查终端配置文件(
~/.bashrc、~/.zshrc等)中是否存在export DOCKER_HOST=tcp://localhost:2375这类环境变量,若有则注释掉,重启终端后生效 - 完全关闭Docker Desktop(甚至卸载,若不再使用),避免其占用Docker服务的端口或资源
- 检查终端配置文件(
确认systemd已正确启用
- 检查
/etc/wsl.conf是否包含以下配置:[boot] systemd=true - 若未配置,创建该文件后执行
wsl --shutdown关闭WSL,重新进入Ubuntu后,执行systemctl list-units --type=service确认systemd正常运行
- 检查
检查Docker依赖服务
- 确认containerd服务正常运行:
sudo systemctl status containerd,若未启动则执行sudo systemctl start containerd && sudo systemctl enable containerd - 重新安装Docker完整依赖:
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
- 确认containerd服务正常运行:
检查端口与进程冲突
- 检查Docker默认端口(2375/2376)是否被占用:
sudo lsof -i :2375或sudo netstat -tulpn | grep 2375 - 若发现被其他进程占用(比如Docker Desktop残留进程),执行
sudo kill -9 <进程PID>终止进程
- 检查Docker默认端口(2375/2376)是否被占用:
重置Docker状态(备份重要数据后操作)
- 停止Docker服务:
sudo systemctl stop docker - 备份
/var/lib/docker目录(若有重要镜像/容器),然后删除该目录:sudo rm -rf /var/lib/docker - 重新启动Docker服务:
sudo systemctl start docker,观察是否能正常初始化
- 停止Docker服务:
内容的提问来源于stack exchange,提问作者Gabriel García Garrido
相关产品推荐
相关产品推荐

