WSL 让 Windows 拥有完美 Docker 体验

2024-04-16 21:45:13 25点赞 184收藏 20评论

WSL 全称 Windows Subsystem for Linux,即运行在 Windows 上的 Linux 子系统。“WSL + Linux 发行版”的组合,可以让 Windows 拥有接近原生 Linux 的体验。在 WSL 上部署 Docker ,让你在 Windows 上可以拥有完美 Docker 体验。

安装 WSL

安装 WSL 需要硬件和系统设置均支持虚拟化,具体可以参考官方文档。如果软硬件符合条件,一条简单命令即可安装 WSL:

#安装 wsl wsl --install #升级 wsl,目前最新版为 2.1.5 wsl --update

官方安装文档:

https://learn.microsoft.com/zh-cn/windows/wsl/install

安装好 WSL 后,你需要根据实际情况安装 Linux 发行版。在 Microsoft Store 中搜索 wsl 即可下载你想要的 Linux 发行版。本文以 Ubuntu-22.04 为案例:

WSL 让 Windows 拥有完美 Docker 体验

如果没有 Microsoft Store ,可以去官网下载 WSL 发行版:

https://learn.microsoft.com/zh-cn/windows/wsl/install-manual

WSL 让 Windows 拥有完美 Docker 体验

配置 .wslconfig 文件

WSL 有 2 个重要的配置文件 .wslconfig 和 wsl.conf,其中 .wslconfig 位于 Windows 系统上,wsl.conf 位于 Linux 发行版系统上。首先介绍配置 .wslconfig。

打开 .wslconfig 文件目录:Win+R 运行 %UserProfile% ,会打开用户目录,然后新建一个 wslconfig 文件。 .wslconfig 配置可以参考如下内容:

[experimental] #自动释放内存 autoMemoryReclaim=gradual #网络镜像模式 networkingMode=mirrored hostAddressLoopback=true #共用 Windows DNS、防火墙、代理设置 dnsTunneling=true firewall=true autoProxy=true

配置 wsl.conf 文件

wsl.conf 的作用是配置自启动程序、磁盘自动挂载等,文件目录为:/etc/wsl.conf。下面是参考案例:

[boot] #启用 systemd systemd=true #开机运行 docker service docker start

.wslconfig 和 wsl.conf 的详细参数可以参考官方文档:

https://learn.microsoft.com/zh-cn/windows/wsl/wsl-config

安装 Docker

docker 可以通过发行版的包管理工具安装,比如 Ubuntu(sudo apt install docker docker-compose),也可以用官方的安装脚本进行安装:

curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh sudo service docker start

在本文案例中 WSL 采用了 networkingMode=mirrored 镜像网络模式,好处是可以用 Windows 相同 IP 访问到 docker 。但是必须配置一下,否则无法访问 docker 容器。

方法一:ignoredPorts

在 .wslconfig 中通过 ignoredPorts 命令设置放行的端口,通过这些端口可以顺利访问你部署的 docker 容器。

[experimental] networkingMode=mirrored hostAddressLoopback=true ignoredPorts = 8000,8080

方法二:hostAddressLoopback

在 .wslconfig 中添加 hostAddressLoopback=true :

[experimental] networkingMode=mirrored hostAddressLoopback=true

然后进入 Linux 发行版编辑 docker 配置文件:/etc/docker/daemon.json,添加:

{ "iptables": false }

这个方案的缺点是无法使用 iptables。

添加中文环境支持

如果遇到中文显示乱码检查一下是否安装中文字体

sudo apt install fonts-noto-cjk

WSL 开机运行

如果你想开机运行 WSL (让你的 docker 容器随时可访问),首先查看发行版名称并记下来:

wsl -l --allWSL 让 Windows 拥有完美 Docker 体验

Win+R 运行 shell:startup 打开启动目录,创建一个 wsl-startup.vbs 脚本文件,脚本内容如下:

set ws=wscript.CreateObject("wscript.shell") ws.run "wsl -d Ubuntu-22.04",vbhide

可自行修改 Linux发行版名称(本案例为 Ubuntu-22.04),vbhide 参数为隐藏窗口运行。这样 WSL 的 Linux 发行版就会在开机时就运行。

然后装一个好用的 docker 管理器比如:dockge 或者 portainer,就可以在开始折腾了,就像把你的 Linux 主机和 Windows 二合一了一样。

WSL 让 Windows 拥有完美 Docker 体验WSL 让 Windows 拥有完美 Docker 体验

注意,折腾 WSL 主机内存最好在 32G 以上。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
20评论

  • 精彩
  • 最新
  • wsl下使用docker会有很严重的内存泄漏,非常容易吃完所有内存导致系统变卡,泄漏的内存在任务管理器里不显示,并且无法通过重启以外的方式释放,慎用wsl。
    去看看

    校验提示文案

    提交
    wsl配win11才好用那么点,配win10就是一坨 [大囧]

    校验提示文案

    提交
    额,2022年的issue。没大内存不建议玩wsl,但真没这么危言耸听。

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 一直想写篇windows做nas的文章,不过就是懒得写,就是用wsl跑docker或者直接装casaos。wsl对比vmware虚拟机优势主要是与windows的交互更简单,windows直接就能访问linux的文件夹,至于效率我没测过,也就不瞎说了。winnas既有了win的通用性又能用上各种docker,非常好,至于windows版的docker就是一坨翔,放弃吧。

    校验提示文案

    提交
  • 我也想说,这么费劲为啥不直接上虚拟机呢

    校验提示文案

    提交
    这要问为什么微软砍了wsa没砍wsl呢

    校验提示文案

    提交
    收起所有回复
  • 微软好像后继不支持WSL了

    校验提示文案

    提交
    wsa不支持,wsl还没说吧?

    校验提示文案

    提交
    额被砍的是wsa

    校验提示文案

    提交
    收起所有回复
  • VMware 下直接跑虚拟机好像更简单一点

    校验提示文案

    提交
  • docker不是有桌面版?不好用吗?我没用过所以好奇

    校验提示文案

    提交
    不好用,docker-desktop其实也是WSL2实现的,没有中文,并且他很多docker的特性不支持,还有内存泄露的问题,限制2GB,开一个礼拜吃了12GB,重启docker-desktop就恢复2GB了,过几天又吃十几GB,还不如Linux虚拟机里面的呢

    校验提示文案

    提交
    收起所有回复
  • 这算套娃么? [喜极而泣]

    校验提示文案

    提交
  • 还有wsa也是半成品,还是自己老老实实装个linux虚拟机,也没见资源占用更多

    校验提示文案

    提交
  • 不是docker

    校验提示文案

    提交
  • 只用docker的话好像不用wsl啊。

    校验提示文案

    提交
  • wsl开发人员指出该问题与缓存机制相关并已在预览版里开启了drop_cache来缓解,但是具体能否解决问题仍需要观察。

    校验提示文案

    提交
  • 路径的配置最好也写一下,方便很多小白使用

    校验提示文案

    提交
  • 目录下没有配置文件?怎么创建?新建txt,改后缀?

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
184
扫一下,分享更方便,购买更轻松