Combo entry · machine-readable · status partial

容器与 WSL 环境成套配置与排查 Partial

Docker 和 WSL 装了但"用不起来"——daemon 连不上、端口冲突、exec 报 TTY、容器访问不了宿主机、WSL 输出乱码、报磁盘满、WSL 里找不到 node;每篇教程各讲一个坑,本组合包按「先 WSL 后 Docker」顺序成套解决

本页嵌入 #trove-entity JSON(本组合包全量结构化数据);全库数据见 /agent/trove.json。

Metadata

idcombo-docker-wsl-envrecorded2026-08-29
members2statuspartial

install script ↓

Members (2)

toolroleversioninstallguide
WSL基础环境配置目标WSL >= 2.4.4(wsl --manage <发行版> --set-sparse true 需要 2.4.4+,WSL 2 为运行前提)
# 编码(问题:wsl-pipe-encoding)——现代 WSL 默认 UTF-8 管道,中文直传正常;
  # 旧版 / Windows PowerShell 5.1 出现逐字符空字节/乱码时,改为 Windows Terminal + WSL 内 UTF-8 区域设置:
  sudo locale-gen zh_CN.UTF-8 && sudo update-locale LANG=zh_CN.UTF-8
  # 磁盘(问题:wsl-no-space-left)——vhdx 稀疏化,删除文件自动还空间(WSL 2.4.4+):
  #   Windows 侧(PowerShell):wsl --shutdown
  #   wsl --manage <发行版> --set-sparse true
  # 运行时(问题:claude-code-router-2)——WSL 侧装 Node,别依赖 Windows 侧 npm:
  curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - && sudo apt-get install -y nodejs
—
Docker Engine容器运行时配置目标>= 20.10(registry-mirrors / host-gateway 长期支持;本机实测 29.1.3)
# daemon(问题:docker-daemon-connect)——"Cannot connect to the Docker daemon" 三板斧:
  #   1) Docker Desktop 已启动且开启 WSL 集成(Settings → Resources → WSL integration)
  #   2) 检查 socket:ls -l /mnt/wsl/docker-desktop/shared-sockets/guest-services/docker.proxy.sock
  #   3) 或本机直接跑 Engine:sudo systemctl enable --now docker
# 排查:占用者是不是 docker-proxy,daemon 是不是 /usr/bin/dockerd(旧 daemon 特征)
  ss -ltnp | grep <端口>
  systemctl status docker          # 确认旧 daemon 在自启
  # 处理:停掉并禁用 WSL 内旧 daemon(先确认其名下无在用容器再停)
  systemctl stop docker docker.socket
  systemctl disable docker docker.socket
—

Install order

  1. WSL 基础先行:编码(乱码)与磁盘(vhdx 稀疏化)是环境层,先确认;WSL 侧 Node 先装好(npm 来自 Windows 侧是 ccr 等工具在 WSL 里找不到 node 的根因)。
  2. Docker daemon 可达:socket 存在 + docker info 出 Server 段,才进入容器操作层。
  3. 容器操作层:端口冲突 → exec TTY → 容器访问宿主机,按报错顺序逐条排。

Dependency warnings

Linked problems

Evidence

Evidence details kept locally (2026-08-29)