2. Docker 环境安装与配置(Linux/Windows/Mac)

正式开始前,我得先给你泼盆冷水。

Docker 配置不当,后面分析跑一半报错,真的很头疼。我当年第一次装,就因为少配了镜像加速,下载空间转录组镜像等了俩小时。嗯,让你少走弯路,这章我着重讲三个平台怎么装、怎么配。

跨平台 Docker 安装流程概览 Linux 安装 Windows 安装 macOS 安装 apt/yum/Docker 官方脚本 Docker Desktop + WSL2 Docker Desktop for Mac 核心配置:镜像加速器 + 非root用户管理 验证:docker run hello-world

2.1 Linux 下安装 Docker

我个人习惯在 Ubuntu 20.04 以上用 apt 装。CentOS 用户请用 yum。其他发行版,我建议你走官方脚本,省心。

先更新包索引:

sudo apt update
sudo apt install -y 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 Engine:

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

验证安装,跑一下镜像:

sudo docker run hello-world

看到 Hello from Docker!就说明装好了。

2.2 Windows 下安装 Docker

Windows 用户,你记住一个原则:必须启用 WSL2。Docker Desktop 本质上还是靠 Linux 内核跑的。

先启用 WSL2:

# 以管理员身份打开 PowerShell
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
wsl --set-default-version 2

去 Docker 官网下载 Docker Desktop for Windows。安装时勾选 “Use WSL 2 based engine”。

提示: 我建议在 WSL2 的 Linux 发行版中执行后续所有操作,而不是在 PowerShell 里混用。这样能保证路径、权限和你分析环境一致。

2.3 macOS 下安装 Docker

macOS 分 Intel 和 Apple Silicon 两种芯片。下载对应的 Docker Desktop for Mac 即可。

Apple Silicon 用户务必选 arm64 版本。你想想看,要是下了 amd64 版,翻译层会额外消耗内存,空间转录组数据量一大就崩。

# 安装后检查架构
uname -m
# 应该输出 arm64(M1/M2/M3 芯片)

警告: 曾经有学员在 M1 Mac 上跑了 amd64 的 Docker 容器,单细胞分析结果精度没问题,但 IO 延迟高了 3 倍。务必用原生 arm64 镜像。

2.4 核心配置:镜像加速器

这是避坑关键。国内拉 Docker Hub 镜像慢得你想砸电脑。我一般配阿里云加速器或中科大源。

Linux 用户编辑 daemon.json:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  },
  "storage-driver": "overlay2"
}
EOF

重启 Docker:

sudo systemctl daemon-reload
sudo systemctl restart docker

Windows 和 macOS 用户,在 Docker Desktop 设置界面 -> Docker Engine 里粘贴上述 JSON 配置,保存重启即可。

经验: 配了镜像加速器后,下载空间转录组镜像从 45 分钟降到 3 分钟。这步不值得省。

2.5 非 root 用户配置

默认只有 root 能跑 Docker 命令。但你分析时用 root 不安全,也容易污染文件权限。

把当前用户加入 docker 组:

sudo usermod -aG docker $USER
newgrp docker

验证一下:

docker run hello-world
# 不再需要 sudo
平台 安装方式 推荐配置 避坑重点
Linux apt / yum / 官方脚本 daemon.json + overlay2 非 root 组及时添加
Windows Docker Desktop + WSL2 WSL2 后端 + 镜像加速 不要在 PowerShell 直接跑容器
macOS Docker Desktop for Mac arm64 原生镜像 确认芯片架构选对版本

小技巧: 配置完成后,用 docker version 确认 Server 和 Client 版本一致。我曾经见过它们不一致导致 kompose 解析失败的案例。

2.6 验证环境是否正常工作

最后一步,跑一个轻量测试链:

docker run --rm alpine:latest echo "环境就绪"
docker info | grep "Images"
docker system df

看到 alpine 容器输出 “环境就绪” 就代表你通过了。后面的章节,我们就拿这个环境来封装空间单细胞分析工具链。