第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 环境就算配好了。
环境准备决定了后续管线的稳定性。这一步耐心点,后面会省很多事。
2.10 小结
这一章我们走完了 Docker 安装和配置的全流程。从环境检查、安装、配置加速器,到存储优化。每一步都直接影响你后面搭质控管线的效率。
说白了,环境搭好了,就等于成功了一半。别忘了验证环节,跑个 hello-world 确认一切正常。好了,你的 Docker 环境已经就绪。接下来就可以用它拉镜像、跑容器、搭你想要的任何管线了。