Docker安装与环境配置
好,咱们正式开始动手装 Docker。这一章,说白了就是要让你手上的机器变成一个能跑容器的环境。我见过太多人卡在这一步——明明照着官方文档一步步来,结果启动容器时报错,查半天发现是内核版本不对,或者用户组没配置好。
我个人习惯在开始之前,先确认三件事:操作系统是 64 位的、内核版本够新、没有残留的老版本 Docker。这三样只要有一个不满足,后面全是坑。
安装前的环境检查
打开终端,跑下面几条命令看看你的环境是否达标:
# 查看内核版本(Linux 内核必须 >= 3.10)
uname -r
# 查看操作系统版本
cat /etc/os-release
# 如果之前装过旧版 Docker,先卸载干净
sudo apt-get remove docker docker-engine docker.io containerd runc
为什么要这么谨慎?我记得有一次在客户现场部署,对方服务器内核是 3.8 的,装完 Docker 后所有容器都起不来。折腾了半天,最后发现是内核不支持 overlay2 存储驱动。所以,先检查再动手,能省掉你至少一个小时的排查时间。
安装 Docker Engine
现在主流 Linux 发行版都支持通过官方仓库安装。我以 Ubuntu 为例,CentOS / RHEL 的命令也差不多,只是包管理器换成 yum 或 dnf。
# 安装依赖
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 Engine
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
注意最后一行,我装了 docker-compose-plugin。这在后续做多容器编排时会用到。如果你只是临时测试,可以只装前三个,但我建议一次到位。
验证安装
装完后别急着跑业务容器,先跑一个 hello-world 镜像验证一下:
sudo docker run hello-world
如果看到类似下面的输出,就说明 Daemon 正常工作:
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
你看这个输出,它其实就展示了 Docker 的完整工作流程:客户端—守护进程—镜像拉取—容器创建—结果返回。后面的所有操作都绕不开这个模型。
配置镜像加速器
在国内使用官方 Hub 拉取镜像,速度经常让人抓狂。我在项目里遇到过几次,一个 200MB 的镜像能拉半小时。解决办法就是配置镜像加速器。
编辑 Docker 的守护进程配置文件 /etc/docker/daemon.json(如果文件不存在就新建一个):
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com"
]
}
配置完成后重启 Docker:
sudo systemctl daemon-reload
sudo systemctl restart docker
验证加速器是否生效:
docker info | grep "Registry Mirrors"
如果能看到你配置的地址列表,就说明生效了。
管理非 root 用户
每次用 Docker 都加 sudo 太麻烦了。而且说实话,在持续集成环境里,跑命令的用户大概率不是 root。你要做的就是把当前用户加入 docker 用户组:
# 创建 docker 组(如果还没有的话)
sudo groupadd docker
# 将当前用户加入 docker 组
sudo usermod -aG docker $USER
# 退出重新登录,或者执行以下命令立即生效
newgrp docker
验证一下:
docker run hello-world
如果不需要 sudo 就能跑,说明配置成功。
Windows 与 macOS 上的安装差异
如果你是 Windows 或 macOS 用户,安装方式不太一样。我简单说一下关键区别:
| 操作系统 | 安装方式 | 关键前提 |
|---|---|---|
| Windows | 下载 Docker Desktop for Windows | 必须开启 WSL2 或 Hyper-V;Windows 10 专业版/企业版 |
| macOS | 下载 Docker Desktop for Mac | macOS 10.15 及以上;Apple Silicon 芯片需选择对应版本 |
| Linux | 通过包管理器安装 docker-ce | 内核 >= 3.10;支持 overlay2 文件系统 |
嗯,这里要注意:Docker Desktop 在 Windows 上的 WSL2 模式下,容器实际上跑在 Linux 子系统中,性能比 Hyper-V 模式好不少。我个人的建议是优先用 WSL2。
核心流程图:安装与环境配置全流程
把整个安装流程串起来看,其实就是一个决策树:
常见的安装问题与解决方法
装环境这件事,说白了就是跟各种错误打交道。我把自己踩过的坑列在下面,希望能帮你省点时间。
- 问题:执行
docker info报Cannot connect to the Docker daemon。
原因:Docker Daemon 没启动,或者当前用户不在 docker 组。
解决:sudo systemctl start docker sudo systemctl enable docker - 问题:安装时提示
Package docker-ce is not available。
原因:官方仓库未添加,或者系统版本太老。
解决:检查lsb_release -cs的输出是否在官方支持列表里。如果是 Ubuntu 16.04 以下版本,建议升级系统。 - 问题:拉取镜像时速度极慢,或超时。
解决:按照前面说的配置镜像加速器。如果仍然慢,考虑手动拉取后通过docker save和docker load离线传输。
核心结论 —— 安装 Docker 不是终点,配置一个稳定、高效、可重复的环境才是。检查内核、配置加速器、管理用户组,这三步做完之后,你的机器就算真正为容器化准备好了。