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,干净又可控。
- 更新包索引并安装依赖:
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
- 添加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
- 设置仓库:
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 Engine:
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
- 启动Docker并设置开机自启:
sudo systemctl enable docker --now
- (可选)将当前用户加入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兼容性好、性能也更接近原生。
步骤:
- 启用WSL2:以管理员身份打开PowerShell,执行:
wsl --install
这个命令会安装Ubuntu默认发行版并启用WSL2。如果你之前装过WSL1,可以手动升级:
wsl --set-version Ubuntu 2
- 从 Docker官网 下载Docker Desktop for Windows,安装时勾选“Use WSL 2 instead of Hyper-V”。
- 安装完成后,打开Docker Desktop,在设置 → Resources → WSL Integration中,确保你的Ubuntu发行版被启用。
- 在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 本章知识结构图
这张图帮你快速定位自己应该走哪条路:根据你当前的操作系统选择对应的安装方式,最终汇聚到“验证安装”这个终点。只要走到这里,你就可以开始准备MetaPhlAn流程了。
最后说一句:安装完成后记得重启一次终端(或重新登录),然后再跑 docker run hello-world。我第一次装Linux版时忘了重新加载用户组,白白花了半小时排查权限问题。