Docker 安装与配置:Linux/Windows/Mac 平台安装、镜像加速器配置

说实话,Docker 安装本身并不难,但很多新手栽在细节上。我记得第一次在 Windows 上装 Docker 时,直接报了个“WSL 内核未更新”的错误,折腾了我一个下午。后来总结下来,核心就三件事:选对版本、配好环境、挂上加速器。下面咱们一个一个来。

安装前的准备工作

不管你用什么系统,先确认几件事:

  • 操作系统版本:Docker Desktop 要求 Windows 10/11 专业版或企业版(建议用 WSL 2 后端),macOS 要求 10.15 以上,Linux 则要 64 位内核 3.10+。
  • 硬件虚拟化已开启:BIOS 里 Intel VT-x 或 AMD-V 必须打开。我遇到过几次虚拟机里装 Docker,结果嵌套虚拟化没开,一启动就挂。
  • 网络环境:墙内用户一定要提前找好镜像加速器地址,不然拉个 hello-world 都要等半天。
平台 最低要求 推荐安装方式
Windows Win10 Pro 21H2+ / Win11 Docker Desktop + WSL2 后端
macOS 10.15 Catalina+ Docker Desktop (Intel 或 Apple Silicon)
Linux (Ubuntu) 内核 3.10+ 官方 apt 仓库安装

Linux 平台安装(以 Ubuntu 22.04 为例)

说白了,Linux 安装最干净,也最接近生产环境。我个人习惯用官方仓库,不用 snap,因为 snap 版本的 Docker 有时会和宿主 cgroup 打架。

# 卸载旧版(如果有)
sudo apt remove docker docker-engine docker.io containerd runc

# 安装依赖
sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release

# 添加 Docker 官方 GPG 密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 设置稳定版仓库
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

# 安装 Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

# 启动并设置开机自启
sudo systemctl enable docker --now

装完后别急着开心。先把你自己的用户加到 docker 组,不然每次都要 sudo:

sudo usermod -aG docker $USER
newgrp docker
注意:加组后要退出重新登录才生效。我曾经犯过傻,以为直接 newgrp 就够了,结果用 VSCode Remote 连上去还是提示权限不足,浪费了半小时。

验证安装:

docker run hello-world

Windows 平台安装

嗯,Windows 上我强烈建议用 WSL2 后端。Docker Desktop 虽然自带 Hyper-V 后端,但 WSL2 更轻量,资源占用小,而且和 Linux 容器兼容性最好。

  1. 先安装 WSL2:以管理员身份打开 PowerShell,执行:
    wsl --install -d Ubuntu-22.04
  2. 确保 WSL 版本为 2:
    wsl --set-default-version 2
  3. 下载 Docker Desktop for Windows:从官网下载安装包,安装时勾选“Use WSL 2 based engine”。
  4. 设置 WSL 集成:打开 Docker Desktop → Settings → Resources → WSL Integration,打开你要用的发行版开关。

我试过直接装 Docker Desktop 而不先配 WSL2,结果启动后一直卡在“Docker Engine starting”,日志里报“failed to start containerd”。其实就是内核没到位。

Mac 平台安装

Mac 用户分两种:Intel 芯片和 Apple Silicon (M1/M2/M3)。Docker Desktop 会自动检测架构,但要注意——如果你在 M 系列 Mac 上需要跑 x86 镜像,得手动安装 Rosetta 并启用仿真。我有个同事直接拿 M1 拉了一个老旧的 CentOS 6 镜像,结果跑起来全是指令集不兼容的报错。

# 下载安装 Docker Desktop for Mac
# 如果使用 Apple Silicon,确保勾选“Use Rosetta for x86/amd64 emulation on Apple Silicon”

# 验证架构兼容性
docker info | grep Architecture

装好后,Docker Desktop 会自己创建软链接到 /usr/local/bin/docker,然后就可以用了。

镜像加速器配置

这一步在国内绝对是刚需。默认 Docker Hub 在国内访问极慢,经常超时。我习惯用阿里云或中科大的镜像。说白了,就是给 Docker daemon 加个 registry-mirrors 配置。

Linux 上:编辑 /etc/docker/daemon.json,没有就新建:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com"
  ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

Windows 和 Mac 上在 Docker Desktop 的 Settings → Docker Engine 里直接编辑 JSON 配置,然后点 Apply & Restart。

小技巧:我建议至少配两个镜像源,一个挂了自动切到另一个。另外,阿里云每个人有自己的专属加速器地址(登录后查看),那个速度最快。曾经有一次中科大镜像挂了,幸好我同时配了阿里云,生产拉镜像没受影响。

验证与常见坑

配置完加速器后,拉一个 busybox 试试看:

docker pull busybox:latest

如果出现“Error response from daemon: Get ... net/http: TLS handshake timeout”,大概率是加速器地址填错了或者墙内某些运营商抢断 IP。换个地址,或者检查一下 dns 设置。

  • Linux 用户:务必检查 cgroup 版本。Docker 20.10+ 默认用 cgroup v2,如果宿主机是 CentOS 7(cgroup v1),需要手动调整 daemon 配置。
  • Windows 用户:如果 Docker Desktop 启动后提示“Hardware assisted virtualization and data execution protection must be enabled”,去 BIOS 打开 VT-x 并关闭 Hyper-V(如果没在用)。
  • Mac 用户:Apple Silicon 下运行 x86 镜像会慢,建议使用 --platform linux/amd64 显式指定,或改用 ARM 原生镜像。

一句话总结整个工作流:检查硬件 → 安装 Docker → 启动服务 → 配置加速器 → 拉取测试镜像。这张图就是完整的决策路径:

Docker 安装与配置流程 检查系统要求 Linux 安装 Windows 安装 macOS 安装 启动 Docker 服务 配置镜像加速器 验证测试:docker run hello-world 💡 各平台安装步骤详见上方正文

搞定了吗?去终端里敲一遍,看看会不会报错。如果遇到问题,多看看 Docker Desktop 的日志——我一般用 docker logs 查容器,用系统日志查 daemon:Linux 上 journalctl -u docker,Windows/Mac 上直接点 Docker Desktop 托盘图标里的 Troubleshoot。