文章

安装 Docker (in WSL2)

安装 Docker (in WSL2)

本文基于 WSL2 + Ubuntu 22.04 环境,使用 Docker 官方 apt 仓库 安装 Docker Engine,并针对 WSL2 中常见的 Docker Hub 访问失败问题 给出稳定解决方案。


一、前提条件确认(非常重要)

1️⃣ 确认 WSL 使用的是版本 2

PowerShell(管理员) 中执行:

1
wsl -l -v

你应该看到类似输出:

1
2
NAME            STATE   VERSION
Ubuntu-22.04    Running 2

如果 VERSION 不是 2,执行:

1
wsl --set-version Ubuntu-22.04 2

2️⃣ 更新 Ubuntu 系统

WSL Ubuntu 22.04 终端 中执行:

1
2
sudo apt update
sudo apt upgrade -y

二、安装 Docker(官方 apt 仓库方式)

不要使用 apt install docker.io,该包版本老且问题较多。


1️⃣ 安装依赖包

1
2
3
4
5
sudo apt install -y \
  ca-certificates \
  curl \
  gnupg \
  lsb-release

2️⃣ 添加 Docker 官方 GPG Key

1
2
3
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
| sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

3️⃣ 添加 Docker 官方仓库

1
2
3
4
5
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

4️⃣ 安装 Docker Engine

1
2
3
4
5
6
7
sudo apt update
sudo apt install -y \
  docker-ce \
  docker-ce-cli \
  containerd.io \
  docker-buildx-plugin \
  docker-compose-plugin

三、启动 Docker(WSL 特有步骤)

1️⃣ 启动 Docker 服务

1
sudo service docker start

验证安装是否成功:

1
docker version

2️⃣ 运行测试容器

1
sudo docker run hello-world

看到 Hello from Docker! 即表示 Docker Engine 工作正常 🎉


四、免 sudo 使用 Docker(强烈推荐)

每次执行 sudo docker 非常繁琐,推荐将当前用户加入 docker 组:

1
sudo usermod -aG docker $USER

必须重启 WSL 才能生效

在 Windows PowerShell 中执行:

1
wsl --shutdown

重新打开 Ubuntu,验证:

1
docker ps

无报错即表示配置成功。


五、Docker 自动启动(WSL 场景)

WSL 并非完整 systemd 环境(Ubuntu 22.04 默认未开启),推荐使用轻量方案。

编辑:

1
nano ~/.bashrc

在文件末尾添加:

1
2
3
if ! pgrep dockerd > /dev/null; then
  sudo service docker start > /dev/null
fi

六、Docker Compose 使用说明

新版 Docker 已内置 Compose 插件:

1
docker compose version

使用方式:

1
docker compose up -d

不再使用旧命令 docker-compose


七、常见问题:无法拉取镜像

典型报错如下:

1
2
failed to resolve reference "docker.io/library/hello-world:latest"
dial tcp 31.13.69.245:443: connect: connection refused

问题说明:

  • Docker 服务 已经正常启动
  • 客户端在尝试访问 Docker Hub
  • 网络被拦截 / DNS 污染 / 公司网络限制

👉 这是网络问题,不是 Docker 安装失败


八、解决方案:配置国内镜像加速器(推荐)

这是 WSL2 场景下最稳定、最通用 的解决方案。

1️⃣ 创建 daemon 配置文件

1
2
sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json

2️⃣ 写入镜像加速配置

1
2
3
4
5
6
7
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://mirror.baidubce.com",
    "https://dockerproxy.com"
  ]
}

3️⃣ 重启 Docker 服务

1
sudo service docker restart

4️⃣ 再次测试

1
docker run hello-world

90% 的环境中,此步骤将直接成功


九、安装windows桌面版docker

在 Windows 上使用 Docker,Docker Desktop 是官方推荐方案。它与 WSL2 深度集成,性能和使用体验都远好于早期的 Hyper-V 方案,非常适合本地开发、学习和测试环境。

安装前准备(务必检查)

在开始之前,请确保你的系统满足以下条件:

  • Windows 10 19045+ / Windows 11(64 位)
  • 已启用 WSL2
  • 已安装并初始化至少一个 Linux 发行版(推荐 Ubuntu 22.04)

1️⃣ 确认 WSL2 状态

PowerShell(管理员) 中执行:

1
wsl -l -v

示例输出:

1
2
NAME            STATE   VERSION
Ubuntu-22.04    Running 2

如果 VERSION 不是 2:

1
wsl --set-version Ubuntu-22.04 2

下载 Docker Desktop

前往 Docker 官方下载页面:

👉 https://www.docker.com/products/docker-desktop/

选择:

Docker Desktop for Windows (x86_64)

下载完成后,得到安装文件:

1
Docker Desktop Installer.exe

百度网盘下载链接


安装 Docker Desktop

双击安装程序,安装过程中请注意以下选项:

1️⃣ 使用 WSL2 后端(推荐)

安装向导中,务必勾选

  • Use WSL 2 instead of Hyper-V

这是性能和稳定性的关键。

2️⃣ 等待安装完成

安装完成后,点击 Finish,Docker Desktop 会自动启动。

首次启动时间可能稍长,请耐心等待。


Docker Desktop 基本配置(重要)

1️⃣ 启用 WSL2 集成

打开 Docker Desktop → SettingsResourcesWSL Integration

  • 开启:Enable integration with my default WSL distro
  • 同时勾选你正在使用的发行版(如 Ubuntu-22.04

点击 Apply & Restart


2️⃣ 验证 Docker 是否可用

打开 WSL Ubuntu 终端,执行:

1
docker version

如果能看到 Client / Server 信息,说明 Docker 已可正常使用。

测试运行一个容器:

1
docker run hello-world

看到 Hello from Docker! 即表示安装成功 🎉


十、总结

至此,你已经完成:

  • ✅ WSL2 + Ubuntu 22.04 Docker 官方安装
  • ✅ 免 sudo 使用 Docker
  • ✅ Docker Compose 新版使用方式
  • ✅ WSL2 网络 / Docker Hub 访问问题解决
本文由作者按照 CC BY 4.0 进行授权