标签 镜像源 下的文章

背景

自己之前一直是使用 Mac,由于公司有合规和审计要求,所以必须使用公司提供的移动工作站,且没有管理员权限。加上自己习惯了 Linux 命令,所以就决定使用 WSL2。下面是自己遇到的一些问题和方案。


Q1:如何配置 WSL 使用 Windows 中安装的代理软件?

A1:配置 Windows 用户主目录下的 .wslconfig 文件和 WSL 用户主目录下的 .zshrc 文件。

镜像模式(推荐,仅限 Windows 11):

[wsl2] networkingMode=Mirrored
autoProxy=false 

~/.zshrc 中添加:

Bash

# WSL Mirrored 模式下直接指向本地 localhost export https_proxy="http://127.0.0.1:7890" export http_proxy="http://127.0.0.1:7890" export all_proxy="http://127.0.0.1:7890" 

NAT 模式(Windows 10 或旧版):

[wsl2] networkingMode=Nat
autoProxy=false 

~/.zshrc 中添加:

Bash

# WSL Nat 模式需要动态获取宿主机虚拟网卡 IP
host_ip=$(ip route | awk '/default/ {print $3}')
export https_proxy="http://$host_ip:7890" export http_proxy="http://$host_ip:7890" export all_proxy="http://$host_ip:7890" 

注意:代理软件务必开启 “Allow LAN”(允许局域网连接)。


Q2:WSL 中的常用工具(如 claude-code)敲字会有卡顿?引用自本站帖子

A2:这是因为 WSL 默认加载了 Windows 的环境变量。ZSH 在进行命令补全时会跨文件系统扫描 Windows 路径,导致严重的 I/O 延迟。

  1. /etc/wsl.conf 中关闭自动导入:
[interop] appendWindowsPath=false 
  1. ~/.zshrc 中手动加载需要的 Windows 工具路径(避开卡顿的 PowerShell 路径):

Bash

# 手动添加常用的 Windows 工具 export PATH="$PATH:/mnt/d/Programs/Microsoft VS Code/bin" export PATH="$PATH:/mnt/c/Windows" # export PATH="$PATH:/mnt/c/Windows/system32" 


Q3:Maven/Java 无法连接网络,DNS 解析卡死?

A3:表现为 curl 正常,但 mvn 构建长时间卡在 Downloading,或 nslookup 报错 Truncated, retrying in TCP mode

修改 Windows 用户目录下的 .wslconfig 配置文件:

[wsl2] dnsTunneling=false 

原因:在 Mirrored 模式下,开启 dnsTunneling 后 Windows 会接管 DNS 请求。由于公司防火墙或 VPN 往往不识别这种隧道流量,会导致解析死锁。关闭它让 WSL2 回归标准 DNS 流程反而能解决问题。


Q4:为什么 Systemctl 命令报错,无法启动服务?

A4:WSL2 默认使用传统的 init 进程,而不启用 systemd,导致 systemctl start 等命令无法使用。

/etc/wsl.conf 中开启支持:

[boot] systemd=true 

修改后,需在 Windows PowerShell 中执行 wsl --shutdown 重启 WSL。之后即可正常管理系统服务。


Q5:配置 Ubuntu 镜像源为阿里云

A5:手动替换为阿里云镜像源可以大幅提升 apt install 下载速度。

执行以下命令:

Bash

# 备份原文件 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

# 将官方源替换为阿里云源 sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list

# 更新索引 sudo apt update


最后附上我的.wslconfig 文件内容

PS C:\Users\Administrator> cat .\.wslconfig
[wsl2]
networkingMode=Mirrored
autoProxy=false
firewall=false
processors=8
memory=16GB
swap=0
dnsTunneling=false

📌 转载信息
原作者:
jingu_wang_Bond
转载时间:
2026/1/12 15:39:41

项目地址:GitHub - CandyMuj/DockerCN: 针对中国网络环境的 Docker 使用优化,解决 pull push login 的网络问题,优化镜像内 apt pip 等工具为国内源!支持多平台架构镜像构建!

已经优化的部分镜像:DockerHub - CandyMuj

现在部署项目基本都依赖于 Docker 了,但是国内的网络环境导致使用 Docker 很不方便

  • 看了下目前安装 Docker 的方式多种多样,但似乎都挺麻烦的,其实可以直接用如下简洁的命令一键安装(基于阿里云,这个似乎是很多年前在菜鸟教程看见的安装方式,我就一直用到了现在)

    不知为啥现在好多教程都搜不到这个命令了,刚刚看了下菜鸟教程的安装方式也不是这个命令了,但是这个命令确实还可以用的

    curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
    
  • docker pull docker login docker push 直接用不了

  • 当上面的问题解决后,在使用 Docker 镜像的时候也会遇到问题,比如 apt pip maven npm 等都存在网络问题

  • 并且我希望这个东西更通用,除了可以用于 Docker,也可以直接用于优化国内的服务器

  • 执行优化可以高度自定义(自己想怎么优化就怎么优化,相当于提供一个框架,可以自定义实现)

我不希望每次使用的时候还要手动处理镜像源相关的问题,我就在想有没有可能直接开箱即用,镜像拉下来就可以使用,想了想,自己造一个吧,于是就花了两天实际造了这个项目

具体的使用及优化细节,可以看看 README,自认为写的还是比较详细的(甚至可能有点啰嗦)

希望对佬友们有用!减少不必要的时间,提升效率!

摘自:项目简介

旨在解决在中国使用 Docker 及 Docker 镜像时的网络问题!加速镜像构建和依赖下载,节省使用 Docker 的时间,让 Docker 更丝滑!

  • 由于官方 DockerHub 被墙,导致 pull push login 无法使用
    1. 解决 pull 问题:配置 Docker 镜像源
    2. 解决 docker 所有命令的网络问题:配置 Docker 代理
  • 优化 Docker 镜像,解决镜像内 包管理器(apt、apk) Python Pip Java Maven 等工具或环境的默认源缓慢或被墙导致无法使用的问题
    1. 理论上支持所有镜像的优化
    2. 使用本仓库的脚本进行优化:将自动配置国内镜像源并重新构建镜像 快速开始
  • 可优化本地镜像,某些镜像未 push 到中央仓库,仅在服务器本地存在,此时可 clone 本项目脚本到服务器,进行本地化的优化 快速开始 - 本地镜像优化
  • 亦可直接优化服务器,而非仅局限于 Docker 镜像 直接优化服务器
  • 极低侵入性:优化不会对原镜像做任何的其他修改,仅优化该优化了,比如:不会修改原有的工作目录、原有的启动命令、不夹带私货 (不安装任何软件包) 等
  • 支持多平台架构镜像构建!

鸣谢

其中关于 Docker 代理的配置方法参考自这位佬友的帖子 请教下佬们 docker login 登录报错问题 - #10,来自 yhp666

我也是试了很多方法去配置代理,一直没成功,然后在站内搜了下发现了这个佬友的帖子


📌 转载信息
转载时间:
2025/12/30 10:23:14