4. Docker 安装与配置

要跑 Kraken2 分析流程,第一步肯定是装 Docker。你可能会想:“装个软件有什么好讲的?” 嗯,其实坑不少。我在不同系统上装过几十次,有些细节不处理好,后面反复出问题。

Docker 在 Linux、Windows 和 macOS 下的安装方式差别很大。我个人的习惯是:能用 Linux 就用 Linux,尤其是服务器端。Windows 和 macOS 更多是用于开发调试。

4.1 Linux 下的安装

Linux 的安装最直接,但不同发行版有细微区别。我以 Ubuntu/Debian 和 CentOS/RHEL 为例。

Ubuntu / Debian

先卸载旧版(如果有的话),然后更新 apt 索引,再安装依赖包。

sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get 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-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
提示:如果你在国内,官方源可能很慢。我用过清华、中科大的镜像源,把上面 URL 里的 download.docker.com 换成 mirrors.tuna.tsinghua.edu.cn/docker-ce 就行。

CentOS / RHEL

CentOS 7 或 8 用 yum 安装。先安装必要的工具包:

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

启动并设置开机自启:

sudo systemctl start docker
sudo systemctl enable docker
注意:CentOS 8 默认的 podman 可能与 Docker 冲突。我遇到过 podman 占用了 docker.sock 的情况,需要先停用 podman 或修改 socket 路径。

4.2 Windows 下的安装

Windows 有两种主流方式:WSL2 + Docker Desktop,或者直接用 Docker Desktop(Hyper-V 后端)。我强烈推荐前者,资源占用小,启动快。

先启用 WSL2

以管理员身份打开 PowerShell,执行:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

重启后,安装 Linux 内核更新包(从微软官网下载),然后设置 WSL2 为默认版本:

wsl --set-default-version 2

从 Microsoft Store 安装 Ubuntu 发行版(比如 22.04 LTS)。

安装 Docker Desktop

去 Docker 官网下载 Docker Desktop for Windows 安装包。安装时勾选「Use WSL 2 instead of Hyper-V」。安装完成后,在设置里启用 WSL 2 后端,并指定你的 Ubuntu 发行版。

个人经验:我刚开始用 Hyper-V 后端,结果虚拟机占了我 4GB 内存。换成 WSL2 后,内存开销降了一半。而且文件共享、网络桥接都更自然。

4.3 macOS 下的安装

macOS 主要用 Docker Desktop for Mac,或者轻量级方案 Colima。我个人习惯用 Docker Desktop,因为它有图形界面,管理容器方便。但如果你在意资源占用,Colima 是个好选择。

Docker Desktop (Apple Silicon / Intel)

从 Docker Hub 下载对应架构的 .dmg 安装包。拖入 Applications 文件夹,打开后会自动在菜单栏显示图标。首次启动会要求授权并安装一些内核扩展。

避坑:如果你用的是 Apple Silicon Mac(M1/M2),一定要下载 Apple Silicon 版本,否则只能跑 x86 模拟,性能大打折扣。我踩过这个坑,跑 Kraken2 比对速度慢了 3 倍。

Colima

Colima 是一个基于 Lima 的轻量级容器运行时。安装简单:

brew install colima
colima start --cpu 4 --memory 8

启动后它会自动配置 Docker 上下文,直接使用 docker 命令即可。

4.4 用户权限设置(关键!)

装完 Docker 后,如果不配置权限,每次执行 docker 命令都要加 sudo。这在实际工作中非常麻烦,尤其是你要在脚本里调用 docker 命令时。

解决方法:将当前用户加入 docker 组。

sudo usermod -aG docker $USER
newgrp docker

然后退出终端重新登录,或者执行 newgrp docker 激活组权限。

重要:加入 docker 组后,用户拥有与 root 同等的 Docker 控制权限。如果是在多用户服务器上,需要注意安全。我会单独建一个 docker-users 组,只把需要运行流程的用户加进去。

验证权限:

docker --version
docker run hello-world

看到 "Hello from Docker!" 就代表安装与权限配置成功。

4.5 常用配置项(适用于所有平台)

装完只是第一步,还有几个配置能让体验更好:

  • 镜像加速器(国内用户必配):在 Docker Desktop 或 /etc/docker/daemon.json 中添加 registry-mirrors。
  • 存储驱动:Linux 推荐 overlay2,性能最好。
  • 资源限制:在 Docker Desktop 里可以限制 CPU、内存,避免占满宿主机。
  • 日志大小限制:设置 max-size=10m 防止日志撑爆磁盘。

一个典型的 /etc/docker/daemon.json 内容:

{
  "registry-mirrors": ["https://registry.docker-cn.com"],
  "storage-driver": "overlay2",
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

修改后重启 Docker 服务:

sudo systemctl restart docker

4.6 知识结构总览

下面这张 SVG 图总结了本章的核心流程:从下载 Docker 到最终能跑起来 hello-world。

Docker 安装与配置流程图 Docker 安装与配置核心流程 1. 选择操作系统平台 Linux: apt/yum 安装 Windows: WSL2 + D.D. macOS: D.D. / Colima 2. 用户加入 docker 组 3. 配置镜像加速 / 日志限制 4. 验证:docker run hello-world 多用户服务器建议单独建 docker-users 组,避免权限滥用 安装完成后运行 hello-world 镜像验证整个过程

4.7 常见问题与避坑

  • “权限被拒绝”:多半是没加 docker 组,或者加入后没重新登录。我曾经在服务器上急得满头大汗,最后发现只是没执行 newgrp docker。
  • “Docker Desktop 启动后一直转圈”:Windows 上常见,先检查 WSL2 是否启用,再检查 Hyper-V 是否冲突。我试过卸载旧版 Docker 重装就好了。
  • “Apple Silicon 拉取 x86 镜像”:记得加 --platform linux/amd64,否则默认拉 arm64 镜像。
  • “Cannot connect to the Docker daemon”:Linux 下检查 systemctl status docker 是否运行;macOS 或 Windows 检查 Docker Desktop 是否启动。
小技巧:如果你在团队中部署,建议把安装脚本写成自动化脚本(比如 Ansible Playbook),这样每台新机器几分钟就能配好环境。我自己的项目就用 roles/docker_install 统一管理。