3. Docker安装与环境配置

说实话,Docker安装本身并不复杂,但不同操作系统下的坑真不少。我本人最早在Windows上踩过“Hyper-V不兼容”的雷,后来转到Linux才觉得清爽。这一节我带你走一遍三个主流平台的安装流程,顺便把我当年遇到的坑告诉你。

核心目标:在你的机器上成功运行 docker run hello-world,看到那句经典的“Hello from Docker!”。

3.1 安装前的准备

无论你用哪个系统,先确认两件事:

  • 操作系统版本 – 64位系统,内核版本足够新(Linux建议3.10以上)。
  • 硬件虚拟化已开启 – Windows/macOS需要VT-x/AMD-V在BIOS中打开。

你可以用下面命令快速检查Linux内核版本:

uname -r

如果是Windows,打开任务管理器 → 性能 → CPU,看看“虚拟化”是否为“已启用”。我遇到过一台旧笔记本没开虚拟化,花了大半天才找到原因,后来开机进BIOS一开就解决了。

3.2 Linux 安装(Ubuntu/Debian 系)

Linux下安装Docker最推荐用官方仓库。我个人习惯用apt,干净又可控。

  1. 更新包索引并安装依赖:
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
  1. 添加Docker官方GPG密钥:
sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
  1. 设置仓库:
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
  1. 安装 Docker Engine:
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  1. 启动Docker并设置开机自启:
sudo systemctl enable docker --now
  1. (可选)将当前用户加入docker组,避免每次加sudo:
sudo usermod -aG docker $USER

我的经验:执行 usermod 后必须重新登录或重启终端才能生效。我曾经以为直接 newgrp docker 就行,结果很多脚本依然报权限错误。

3.3 Windows 安装(WSL2 + Docker Desktop)

现在Windows上跑Docker最推荐的方式是:先装WSL2,再装Docker Desktop(后端用WSL2虚拟机)。为什么?因为原生Docker Desktop依赖Hyper-V,与VirtualBox冲突;WSL2兼容性好、性能也更接近原生。

步骤:

  1. 启用WSL2:以管理员身份打开PowerShell,执行:
wsl --install

这个命令会安装Ubuntu默认发行版并启用WSL2。如果你之前装过WSL1,可以手动升级:

wsl --set-version Ubuntu 2
  1. 从 Docker官网 下载Docker Desktop for Windows,安装时勾选“Use WSL 2 instead of Hyper-V”。
  2. 安装完成后,打开Docker Desktop,在设置 → Resources → WSL Integration中,确保你的Ubuntu发行版被启用。
  3. 在WSL终端中验证:
docker --version

注意:旧版Docker Toolbox已被彻底抛弃,别再用了。WSL2要求Windows 10版本2004以上或Windows 11。如果你的系统太老,只能升级系统或换双系统。

3.4 macOS 安装

macOS上最简单的方式:用Homebrew安装Docker Desktop。个人感觉比手动下载dmg方便,升级也容易。

brew install --cask docker

安装后打开“应用程序”中的Docker图标,它会启动Docker Desktop。第一次启动会请求权限,同意即可。

如果你不想装图形界面,还可以用 brew install docker 只装cli,但需要搭配远程Docker引擎或虚拟机,我不推荐新手这么搞,麻烦。

macOS上Docker默认运行在HyperKit虚拟机里,内存默认2GB。如果你要分析MetaPhlAn这种大内存任务,建议在Docker Desktop → Settings → Resources中将内存调到4-8GB。我当初处理一个16路宏基因组样本时Docker容器因内存不足被OOM杀死,调高内存后就再也没出过问题。

3.5 验证安装

无论你用什么平台,验证方法都一样。运行下面命令:

docker --version
docker info
docker run hello-world

如果一切正常,你会看到类似这样的输出:

Hello from Docker!
This message shows that your installation appears to be working correctly.

再用 docker info 确认一下Storage Driver是否是overlay2(推荐),Runtimes是否包含runc。我见过有人装了Docker但存储驱动是devicemapper,这通常是因为系统是旧版CentOS,性能会差很多,建议升级内核。

3.6 常见问题与避坑

问题 现象 解决方案
permission denied 运行docker命令时提示权限不足 用户未加入docker组,执行 sudo usermod -aG docker $USER 并重新登录
Docker Desktop无法启动 一直转菊花或报WSL错误 检查WSL2是否安装成功;尝试重置WSL网络:wsl --shutdown 再重启
系统内核不支持overlay2 docker info 显示 storage driver 为 devicemapper 更新Linux内核到4.0以上;或者安装 linux-image-extra-*
macOS Docker很慢 容器内文件操作极慢 将数据放在 ~/ 或 /tmp,避免跨文件系统挂载;或者使用 --volume 时加上 :delegated 选项

特别提醒:在公司或校园网环境下,Docker可能拉取镜像失败。可以配置国内镜像加速器,例如阿里云、中科大等。配置方法:修改 /etc/docker/daemon.json(Linux)或Docker Desktop的Registry mirrors设置,然后重启Docker守护进程。

3.7 本章知识结构图

Docker安装流程总览 开始安装 Linux apt / yum 安装 Windows WSL2 + Docker Desktop macOS Homebrew / dmg安装 Linux步骤 · 添加GPG密钥 · 安装docker-ce · 启动服务、添加用户 Windows步骤 · 安装WSL2 · 安装Docker Desktop · 启用WSL集成 macOS步骤 · brew install --cask docker · 启动Docker Desktop · 调整内存配置 验证安装 ✓

这张图帮你快速定位自己应该走哪条路:根据你当前的操作系统选择对应的安装方式,最终汇聚到“验证安装”这个终点。只要走到这里,你就可以开始准备MetaPhlAn流程了。

最后说一句:安装完成后记得重启一次终端(或重新登录),然后再跑 docker run hello-world。我第一次装Linux版时忘了重新加载用户组,白白花了半小时排查权限问题。