不使用 Docker Desktop 在 WSL2 上运行 Docker

Docker Desktop 是一个畸形的产品,在某些情况下需要付费,最新的版本中一些功能需要登录,这对于墙内的人来说体验不好,避免出现新的限制,还是抛弃 Docker Desktop 直接使用 Docker CE 吧。

你会得到什么

  • WSL2 上完整的 Docker 体验
  • Docker Daemon 自动启动,不需要什么黑科技
  • 大幅降低 WSL 进程 VmmemWSL 的内存占用,文章最后有对比

要求

已经正常安装了 WSL2 并已安装 Ubuntu 发行版。

环境配置:

OS 相关

# windows 版本
版本:Windows 11 家庭中文版
版本号:23H2
操作系统版本:22631.4317

# WSL 版本
wsl -v
WSL 版本: 2.3.24.0
内核版本: 5.15.153.1-2
WSLg 版本: 1.0.65
MSRDC 版本: 1.2.5620
Direct3D 版本: 1.611.1-81528511
DXCore 版本: 10.0.26100.1-240331-1435.ge-release
Windows 版本: 10.0.22631.4317

# Ubuntu 版本
lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.5 LTS
Release:        22.04
Codename:       jammy

WSL2 配置

配置文件 .wslconfig 内容:

[wsl2]
networkingMode=mirrored
autoProxy=true
dnsTunneling=true
firewall=true
memory=2GB
processors=4
swap=2GB
[experimental]
hostAddressLoopback=true

指南

安装 Docker CE

# 确保无旧软件包
$ sudo apt-get remove docker docker-engine docker.io containerd runc

# 确保安装了先决条件
$ sudo apt-get update
$ sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

# 添加 docker apt key
$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 添加 docker apt 库
$ echo \
    "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 更新 apt
$ sudo apt-get update

# 安装 Docker CE
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

如果这里从 docker 官方安装比较慢,可以参考文章:在ubuntu22.04中使用阿里云镜像站安装docker(官方安装太慢)

安装完成后,执行后续操作:

# 确保 docker 组存在
$ sudo groupadd docker

# 当前用户添加到组中
$ sudo usermod -aG docker $USER

守护程序

实际上在最新版的 WSL2 中已经默认支持 systemd 了,Docker CE 安装完成后就已经自动添加到服务中了,不需要做什么修改。

附加

安装 Docker Compose

# 确认最新版本
$ switch_version=$(curl -fsSL -o /dev/null -w "%{url_effective}" https://github.com/docker/compose-switch/releases/latest | xargs basename)

# 下载二进制文件
$ sudo curl -fL -o /usr/local/bin/docker-compose \
    "https://github.com/docker/compose-switch/releases/download/${switch_version}/docker-compose-linux-$(dpkg --print-architecture)"

# 赋予执行权限
$ sudo chmod +x /usr/local/bin/docker-compose

至此,你的 WSL2 就拥有了一个完整版的 Docker 而完全不需要 Docker Desktop,在我这里,它还顺便帮我解决了,windows 11 主机无法访问 WSL2Docker 中的服务的问题。

内存占用

更重要的,对于 VmmemWSL 内存占用可谓是天壤之别,在所有环境一样的情况下启动两个相同的容器的情况下,在使用 Docker Desktop 时,VmmemWSL占用内存超过 2G,而卸载 Docker Desktop 后直接在 WSL 中使用 Docker CE 时,占用内存在 200MB 左右,差距10倍,非常夸张。

标题:不使用 Docker Desktop 在 WSL2 上运行 Docker

原文链接:https://beltxman.com/4382.html

若无特殊说明本站内容为 行星带 原创,未经同意请勿转载。

发表评论

您的电子邮箱地址不会被公开。

Scroll to top