Docker 安装指南
Docker 容器化平台的权威安装指南。涵盖 Linux(CentOS Stream 9)、macOS(Apple Silicon)、Windows 三大平台,包含最佳实践配置与常见问题排查。
基于 Docker 官方文档(docs.docker.com),最后更新:2026-03
一、Linux 安装(CentOS Stream 9)
1.1 环境信息
| 项目 | 值 |
|---|---|
| 发行版 | CentOS Stream 9(RHEL 系,兼容 rhel fedora) |
| 内核 | 5.15.120-5.ve2.x86_64 |
| 架构 | x86_64 |
| 包管理器 | dnf(YUM 的继任) |
CentOS Stream 9 是 RHEL 9 的上游开发分支,Docker 官方明确支持 CentOS Stream 9 和 CentOS Stream 10。
1.2 前置条件
- 具有
sudo或root权限的用户 - 已启用
centos-extras仓库(默认已启用) - 活跃的网络连接
- 内核版本 ≥ 3.10(当前 5.15 远超要求)
1.3 卸载旧版本
系统可能预装了 Podman 或旧版 Docker(docker、docker-client、docker-engine)。安装前必须清理冲突包:
sudo dnf remove -y docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine \
podman \
runc卸载旧版不会删除 /var/lib/docker/ 下的镜像、容器、卷和网络数据。
1.4 安装 Docker Engine(推荐:RPM 仓库方式)
Step 1:安装依赖并添加 Docker 官方仓库
# 安装 dnf 仓库管理插件
sudo dnf -y install dnf-plugins-core
# 添加 Docker CE 官方仓库
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo先删除旧的 Docker 官方源:
rm -f /etc/yum.repos.d/docker-ce.repo安装阿里云 Docker 源:
dnf config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo刷新缓存:
dnf clean all
dnf makecacheStep 2:安装 Docker Engine、CLI 和插件
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugindocker-ce— Docker Engine 守护进程docker-ce-cli— Docker CLI 命令行工具containerd.io— 容器运行时docker-buildx-plugin— 扩展构建功能(多平台构建)docker-compose-plugin— Docker Compose V2(docker compose子命令)
如果安装过程中提示 GPG 密钥确认,验证指纹为:
060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
Step 3:启动并设置开机自启
# 启动 Docker 守护进程
sudo systemctl start docker
# 设置开机自动启动
sudo systemctl enable docker
# 同时启动 containerd
sudo systemctl enable --now containerdStep 4:验证安装
# 查看 Docker 版本
docker version
# 运行测试容器
sudo docker run hello-world成功输出 Hello from Docker! 即表示安装完成。
1.5 安装特定版本(可选)
# 列出可用版本
dnf list docker-ce --showduplicates | sort -r
# 安装指定版本(替换 <VERSION_STRING>)
sudo dnf install -y docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io1.6 Linux 安装后配置(Post-Install)
非 root 用户运行 Docker
默认情况下,Docker 守护进程绑定 Unix socket,仅 root 可访问。创建 docker 组并添加用户:
# 创建 docker 组(安装时可能已自动创建)
sudo groupadd docker
# 将当前用户加入 docker 组
sudo usermod -aG docker $USER
# 激活组变更(或重新登录)
newgrp docker
# 验证无需 sudo
docker run hello-worlddocker 组等同于 root 权限。仅添加受信任的用户。生产环境考虑使用 Rootless 模式。
配置 Docker 开机自启(systemd)
sudo systemctl enable docker.service
sudo systemctl enable containerd.service禁用开机自启:
sudo systemctl disable docker.service
sudo systemctl disable containerd.service二、macOS 安装(Apple Silicon M 系列)
2.1 系统要求
| 要求 | 说明 |
|---|---|
| 芯片 | Apple Silicon(M1/M2/M3/M4/M5) |
| macOS 版本 | ≥ macOS 12(Monterey) |
| 内存 | ≥ 4 GB(推荐 8 GB+) |
2.2 安装 Docker Desktop
方式一:官网下载 DMG(推荐)
- 访问 Docker Desktop for Mac (Apple Silicon)
- 双击
Docker.dmg,将 Docker 拖入 Applications - 打开 Docker Desktop,完成初始化向导
- 终端验证:
docker version
docker compose version
docker run hello-world方式二:Homebrew 安装
brew install --cask docker安装后从 Launchpad 打开 Docker Desktop 完成初始化。
2.3 Apple Silicon 注意事项
- Docker Desktop 原生支持 ARM64 架构,运行 ARM64 镜像性能最优
- 对于仅提供 AMD64 的镜像,Docker 通过 Rosetta 2 进行 x86_64 模拟
- 启用 Rosetta 加速:Docker Desktop → Settings → General → 勾选 Use Rosetta for x86_64/amd64 emulation on Apple Silicon
- 多架构构建:使用
docker buildx同时构建linux/amd64和linux/arm64
docker buildx build --platform linux/amd64,linux/arm64 -t myapp:latest .2.4 性能优化
- VirtioFS:Docker Desktop → Settings → General → 确认启用 VirtioFS(默认开启),比 gRPC FUSE 快 ~2x
- 资源分配:Settings → Resources → 根据工作负载调整 CPU/Memory
- 对 I/O 密集型项目,将代码放在容器内而非挂载宿主目录
三、Windows 安装
3.1 系统要求
| 要求 | 说明 |
|---|---|
| 系统版本 | Windows 10(Build 19045+)/ Windows 11 |
| 架构 | x86_64(AMD64);ARM64 为早期访问 |
| 后端 | WSL 2(推荐)或 Hyper-V |
| 硬件虚拟化 | BIOS 中启用 VT-x/AMD-V |
3.2 前置:启用 WSL 2
以管理员身份打开 PowerShell:
# 安装 WSL(默认安装 Ubuntu)
wsl --install
# 确认 WSL 版本
wsl --version
# 设置 WSL 2 为默认
wsl --set-default-version 2重启计算机完成 WSL 安装。
3.3 安装 Docker Desktop
- 下载 Docker Desktop for Windows (x86_64)
- 双击
Docker Desktop Installer.exe - 安装向导中确保勾选 Use WSL 2 instead of Hyper-V
- 完成安装后重启
- 启动 Docker Desktop,在 PowerShell 中验证:
docker version
docker run hello-world3.4 Windows 注意事项
- WSL 2 vs Hyper-V:WSL 2 性能更优、资源占用更低,强烈推荐
- 管理员账户:若安装用户与日常用户不同,需将日常用户加入
docker-users本地组 - 防火墙/杀毒软件:部分杀毒软件与 Hyper-V 冲突,若启动失败可将 Docker Desktop 加入排除列表
- Windows 容器:Docker Desktop 支持 Linux/Windows 容器切换(右键系统托盘图标)
四、通用最佳实践配置(daemon.json)
安装完成后,配置 Docker 守护进程以适应生产环境。
4.1 配置文件位置
| 平台 | 路径 |
|---|---|
| Linux | /etc/docker/daemon.json |
| macOS / Windows | Docker Desktop → Settings → Docker Engine |
4.2 推荐的生产级 daemon.json
{
"storage-driver": "overlay2",
"log-driver": "json-file",
"log-opts": {
"max-size": "50m",
"max-file": "3"
},
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com",
"https://docker.m.daocloud.io"
],
"max-concurrent-downloads": 10,
"max-concurrent-uploads": 5,
"default-ulimits": {
"nofile": {
"Name": "nofile",
"Hard": 65535,
"Soft": 65535
}
},
"live-restore": true,
"userland-proxy": false,
"dns": ["8.8.8.8", "1.1.1.1"],
"exec-opts": ["native.cgroupdriver=systemd"]
}4.3 关键配置说明
| 配置项 | 说明 | 推荐值 |
|---|---|---|
storage-driver | 存储驱动,overlay2 性能最优且稳定 | overlay2 |
log-driver • log-opts | 日志轮转,防止磁盘爆满 | json-file,50MB × 3 |
registry-mirrors | 国内镜像加速器,显著提升拉取速度 | 腾讯云 / DaoCloud |
live-restore | Docker 守护进程重启时保持容器运行 | true |
userland-proxy | 禁用用户态代理,使用 iptables 直接转发,减少开销 | false |
native.cgroupdriver | 与 systemd 对齐(CentOS/RHEL 默认 systemd) | systemd |
default-ulimits | 容器默认文件描述符上限 | 65535 |
4.4 应用配置
# 创建/编辑配置文件
sudo mkdir -p /etc/docker
sudo vim /etc/docker/daemon.json
# 重新加载并重启 Docker
sudo systemctl daemon-reload
sudo systemctl restart docker
# 验证配置生效
docker info五、Docker Compose 安装
5.1 Linux(已随 docker-compose-plugin 安装)
# 验证 Compose V2
docker compose version如果需要独立安装:
# 下载最新稳定版二进制
DOCKER_COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep tag_name | cut -d'"' -f4)
sudo curl -L "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose version5.2 macOS / Windows
Docker Desktop 已内置 Docker Compose V2,无需额外安装。
六、常见问题与解决方案
6.1 权限问题
问题:Got permission denied while trying to connect to the Docker daemon socket
原因: 当前用户未加入 docker 组。
sudo usermod -aG docker $USER
newgrp docker
# 或重新登录 SSH6.2 服务启动失败
问题:Job for docker.service failed
排查步骤:
# 查看详细错误
sudo journalctl -xeu docker.service
# 检查 daemon.json 语法
python3 -m json.tool /etc/docker/daemon.json
# 常见原因:daemon.json 中有逗号/引号错误6.3 CentOS Stream 9 与 Podman/Buildah 冲突
问题:安装 Docker 时提示 conflicting requests
解决: 先彻底卸载 Podman 及相关包:
sudo dnf remove -y podman buildah containers-common
sudo dnf install -y docker-ce docker-ce-cli containerd.io6.4 镜像拉取缓慢或超时
问题:error pulling image: context deadline exceeded
解决: 配置国内镜像加速器(见第四章 registry-mirrors),然后:
sudo systemctl daemon-reload
sudo systemctl restart docker6.5 DNS 解析失败
问题:容器内无法解析域名
解决: 在 daemon.json 中指定 DNS:
{
"dns": ["8.8.8.8", "1.1.1.1"]
}6.6 磁盘空间不足
问题:no space left on device
解决:
# 查看 Docker 磁盘占用
docker system df
# 清理无用资源(dangling 镜像、停止的容器、未使用的网络)
docker system prune -f
# 深度清理(包括未使用的镜像和卷)
docker system prune -a --volumes -f如需修改 Docker 数据存储路径:
{
"data-root": "/data/docker"
}6.7 Windows:WSL 版本过旧
问题:Docker Desktop 提示 WSL 2 installation is incomplete
解决:
wsl --update
wsl --shutdown
# 重新启动 Docker Desktop6.8 macOS:Docker Desktop 启动卡住
解决:
- 退出 Docker Desktop
- 终端执行
rm -rf ~/Library/Group\ Containers/group.com.docker/pki - 重新打开 Docker Desktop
七、安装验证清单
-
docker version— 确认 Client 和 Server 均已运行 -
docker compose version— 确认 Compose V2 可用 -
docker run hello-world— 确认容器可正常拉取和运行 -
docker info— 确认 Storage Driver、Cgroup Driver、Registry Mirrors 等配置正确 -
systemctl is-active docker— 确认服务正在运行(Linux) -
systemctl is-enabled docker— 确认开机自启(Linux)
八、卸载 Docker
Linux(CentOS Stream 9)
# 卸载软件包
sudo dnf remove -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 删除所有数据(镜像、容器、卷)
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
sudo rm -f /etc/docker/daemon.jsonmacOS
Docker Desktop → 菜单栏 Docker 图标 → Troubleshoot → Uninstall
Windows
设置 → 应用 → Docker Desktop → 卸载