第2章:Docker安装与配置

好了,咱们直接进入正题。Docker 装不上,后面的管线搭建全是空谈。这章我尽量把坑都给你指出来,让你少走弯路。

我个人习惯在 Linux 环境下跑容器化管线,Windows 和 macOS 虽然也能用,但生产环境还是 Linux 最稳。如果你的实验机器是 Windows,建议装个 WSL2,体验会好很多。

2.1 操作系统与内核要求

Docker 依赖 Linux 内核的 cgroups 和命名空间特性。所以内核版本不能太老。64 位系统是必须的。

操作系统 建议内核版本 备注
Ubuntu 20.04+ >= 5.4 推荐,踩坑最少
CentOS 7+ >= 3.10 需要额外配置
Debian 11+ >= 5.10 稳定
Windows WSL2 内核 需 Docker Desktop
macOS HyperKit 内核 需 Docker Desktop

Ubuntu 是我最常用的。为什么?包管理方便,社区活跃,遇到问题好搜。你想想看,要是 CentOS 装个新内核还得自己编译,多浪费时间。

2.2 卸载旧版本

如果你之前装过 Docker,最好先清理干净。我曾经接手一台旧服务器,旧版 Docker 和新版冲突,折腾了俩小时。别犯这种错。

sudo apt-get remove docker docker-engine docker.io containerd runc

执行完这条命令,旧包就卸干净了。然后刷新一下包索引。

sudo apt-get update

注意:这条命令不会删除 /var/lib/docker 里的镜像和容器数据。如果真想“清场”,需要手动删目录。

sudo rm -rf /var/lib/docker

但这步小心,删了就没了。

2.3 安装 Docker Engine

官方推荐用 apt 仓库安装。这样以后升级也方便。我个人不建议用 snap 装,坑太多。

先装一些前置依赖。

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

仓库加好了,更新索引,正式安装。

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

docker-ce 是服务端,docker-ce-cli 是命令行工具,containerd.io 是底层容器运行时。三个都要装。

2.4 启动并验证

装完了,启动服务。

sudo systemctl enable docker
sudo systemctl start docker

验证一下是否装好。

sudo docker run hello-world

看到下面的输出,就算成功了。

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

2.5 非 root 用户运行

每次执行 docker 命令都要加 sudo,挺烦的。我建议把当前用户加入 docker 组。

sudo usermod -aG docker $USER

记得退出当前会话,重新登录。之后就能直接敲 docker ps 了。

有个小提醒:加入 docker 组的用户和 root 权限差不多。安全敏感场景要谨慎。

2.6 配置镜像加速器

在国内拉镜像,速度是个大问题。我记得刚开始做管线时,拉一个 Ubuntu 基础镜像等了半小时,差点崩溃。配个加速器能快不少。

编辑 Docker 的 daemon 配置文件。

sudo mkdir -p /etc/docker
sudo vim /etc/docker/daemon.json

写入下面的内容。加速器地址用你云服务商提供的,这里我用的阿里云。

{
  "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}

重启 Docker 让配置生效。

sudo systemctl daemon-reload
sudo systemctl restart docker

验证一下加速是否生效。

sudo docker info | grep -A 2 "Registry Mirrors"

如果看到你的加速器地址,说明配好了。

2.7 存储驱动与数据目录

我推荐用 overlay2 存储驱动。它性能好,稳定性也高。默认现在基本都是 overlay2,但老系统可能不是,检查一下放心。

sudo docker info | grep "Storage Driver"

如果显示的不是 overlay2,在 daemon.json 里手动指定。

{
  "storage-driver": "overlay2"
}

生物信息学的镜像和数据都很大。我建议把 Docker 的数据目录改到大磁盘分区,省得 /var 撑爆。

{
  "data-root": "/data/docker"
}

改完后重启 Docker 服务,记得提前迁移旧数据到新目录。

sudo systemctl stop docker
sudo mv /var/lib/docker /data/docker
sudo systemctl start docker

2.8 离线安装(可选)

如果你的服务器不能联网,就需要离线装了。先在有网的机器上下载安装包。

wget https://download.docker.com/linux/ubuntu/dists/focal/pool/stable/amd64/docker-ce_24.0.6~3-0~ubuntu-focal_amd64.deb
wget https://download.docker.com/linux/ubuntu/dists/focal/pool/stable/amd64/docker-ce-cli_24.0.6~3-0~ubuntu-focal_amd64.deb
wget https://download.docker.com/linux/ubuntu/dists/focal/pool/stable/amd64/containerd.io_1.6.24-1_amd64.deb

把 deb 包传到离线服务器,然后安装。

sudo dpkg -i docker-ce_24.0.6*.deb docker-ce-cli_24.0.6*.deb containerd.io_1.6.24*.deb

有可能遇到依赖缺失的问题。把报错的包名记下来,用 apt-get -f install 修复。

2.9 验证安装效果

最后我们验证一下整个环境。

docker version
docker info

确认客户端和服务端版本一致,存储驱动是 overlay2,镜像加速器正常工作。嗯,到这里 Docker 环境就算配好了。

环境准备决定了后续管线的稳定性。这一步耐心点,后面会省很多事。

Docker 安装与配置流程图 检查内核与OS 卸载旧版本 安装 Docker Engine 配置加速器与驱动 验证安装效果 Ubuntu 20.04 / 内核 ≥ 5.4 清理残留包,避免冲突 apt/离线deb两种方式 overlay2 + registry-mirrors 跑 hello-world 确认 避坑提醒 • 非root用户需加入docker组 • 镜像加速器配国内地址 • 数据目录移到独立分区

2.10 小结

这一章我们走完了 Docker 安装和配置的全流程。从环境检查、安装、配置加速器,到存储优化。每一步都直接影响你后面搭质控管线的效率。

说白了,环境搭好了,就等于成功了一半。别忘了验证环节,跑个 hello-world 确认一切正常。好了,你的 Docker 环境已经就绪。接下来就可以用它拉镜像、跑容器、搭你想要的任何管线了。