WSL2 Ubuntu 24.04 手动安装 Docker Engine 29.x 及 Compose V2 全指南

WSL2 Ubuntu 24.04 手动安装 Docker Engine 29.x 及 Compose V2 全指南

本文档详细介绍如何在 WSL2 Ubuntu 24.04 环境下,通过官方二进制包手动安装 Docker Engine 和 Docker Compose V2。相比 apt 源安装,此方法可获得最新的 Docker 版本(如 29.1.4),并解决了手动安装中常见的依赖缺失和服务配置问题。

1. 环境准备

在开始之前,请确保你的 WSL2 Ubuntu 已启用 systemd,并且系统包列表是最新的。

sudo apt-get update

关键依赖安装
Docker 强依赖 iptables 来进行网络管理。手动安装二进制包时,如果系统未安装 iptables,Docker 启动会报错退出。

sudo apt-get install -y iptables curl

2. 安装 Docker Engine

假设你已经下载了官方二进制包 docker-29.1.4.tgz(请根据实际版本替换文件名)。

2.1 解压并复制二进制文件

将二进制文件解压并移动到系统 PATH 路径下。

tar -zxvf docker-29.1.4.tgz
sudo cp -p docker/* /usr/bin

2.2 配置并启动 Containerd

Docker 守护进程依赖于 containerd。手动安装包中包含 containerd 二进制文件,但不会自动将其注册为 systemd 服务,必须手动配置。

创建 containerd 服务文件

sudo tee /etc/systemd/system/containerd.service > /dev/null <<EOF
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target

[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/bin/containerd
Type=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5
LimitNPROC=infinity
LimitCORE=infinity
LimitNOFILE=infinity
TasksMax=infinity
OOMScoreAdjust=-999

[Install]
WantedBy=multi-user.target
EOF

启动并设为开机自启

sudo systemctl daemon-reload
sudo systemctl enable containerd
sudo systemctl start containerd

检查状态确保 active (running)

sudo systemctl status containerd

2.3 配置 Docker Daemon

创建配置文件 /etc/docker/daemon.json。这里我们配置 Cgroup 驱动为 systemd(适配 WSL2)以及国内镜像加速。

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json > /dev/null <<EOF
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "1g"
  },
  "storage-driver": "overlay2",
  "exec-opts": ["native.cgroupdriver=systemd"],
  "data-root": "/var/lib/docker",
  "registry-mirrors": [
    "https://mirror.ccs.tencentyun.com",
    "https://docker.m.daocloud.io",
    "https://registry.cn-hangzhou.aliyuncs.com"
  ]
}
EOF

2.4 配置 Docker Systemd 服务

注意:手动安装不包含 docker.socket 文件,因此在编写服务单元时,不要依赖 docker.socket,否则会启动失败。

创建 /usr/lib/systemd/system/docker.service

sudo tee /usr/lib/systemd/system/docker.service > /dev/null <<EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target containerd.service
Wants=network-online.target
Requires=containerd.service

[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitInterval=0
StartLimitBurst=3

# WSL2 Compatibility
LimitNPROC=infinity
LimitCORE=infinity
LimitNOFILE=infinity
TasksMax=infinity

[Install]
WantedBy=multi-user.target
EOF

2.5 启动 Docker

sudo systemctl daemon-reload
sudo systemctl start docker

查看状态:

sudo systemctl status docker

如果看到 Active: active (running),说明安装成功。

3. 配置用户权限(免 sudo)

默认情况下,只有 root 用户可以执行 docker 命令。为了方便日常使用,将当前用户加入 docker 组。

sudo groupadd docker
sudo usermod -aG docker $USER

重要:执行完此命令后,必须关闭当前的 WSL 窗口,在 PowerShell 执行 wsl --shutdown 重启 WSL,重新进入后生效。生效后可直接使用 docker ps 而无需 sudo。

4. 安装 Docker Compose V2

Docker Compose V2 现在以插件形式存在,集成在 Docker CLI 中。使用 docker compose(注意中间有空格)命令调用。

4.1 创建插件目录

sudo mkdir -p /usr/local/lib/docker/cli-plugins

4.2 下载最新版本 Compose

下载最新的 Docker Compose V2 二进制文件(v5.0.1)并赋予执行权限。

sudo curl -SL https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose

4.3 验证安装

docker compose version

输出应显示:Docker Compose version v5.0.1

5. 常见问题排查

Q1: 启动报错 iptables not found

原因:系统未安装 iptables 或 nftables
解决:执行 sudo apt-get install -y iptables

Q2: 启动报错 Unit docker.socket not found

原因docker.service 配置文件中引用了不存在的 docker.socket
解决:参照本文 2.4 节,移除 After= 和 Requires= 中的 docker.socket 依赖。

Q3: Docker 反复重启

原因containerd 服务未运行。
解决:检查 sudo systemctl status containerd,确保其处于 active (running) 状态。


结语:通过以上步骤,你已在 WSL2 Ubuntu 24.04 上成功构建了基于官方二进制包的最新 Docker 环境,并配置了镜像加速和 Compose 支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值