Docker 安装与配置完全指南
本文档覆盖 Linux、macOS、Windows 三大平台的 Docker 安装流程,
以及 daemon.json 的详细配置说明。适用于 Docker Engine 24.x / Docker Desktop 4.x。
1. 安装前准备
系统要求
| 平台 | 最低要求 |
|---|---|
| Linux | 内核 3.10+,64 位系统(x86_64 / aarch64) |
| macOS | macOS 12+(Monterey 及以上),Apple Silicon 或 Intel |
| Windows | Windows 10/11 64 位,必须启用 WSL2 |
Linux 发行版推荐使用 Ubuntu 22.04+、Debian 12+、Fedora 38+、
RHEL 8+/CentOS 8+ 或 Arch Linux 最新版。
卸载旧版本
安装前需清理系统中可能存在的旧版 Docker 组件,避免冲突。
# Ubuntu/Debian
sudo apt remove docker docker-engine docker.io containerd runc
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
sudo rm /etc/apt/sources.list.d/docker.list 2>/dev/null
sudo rm /etc/apt/keyrings/docker.gpg 2>/dev/null
# Fedora/RHEL
sudo dnf remove docker docker-client docker-client-latest \
docker-common docker-latest docker-latest-logrotate \
docker-logrotate docker-engine
# Arch Linux
sudo pacman -R docker docker-compose docker-buildx确保残留文件已清理后再执行后续安装步骤。
1.2 Ubuntu/Debian 安装
使用官方脚本(最简单)
适合快速体验环境,一键完成安装。
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER安装完成后需要重新登录终端,或执行 newgrp docker 使组权限生效。
使用 apt 源(推荐生产环境)
手动配置 apt 源可精确控制版本,适合服务器和 CI 环境。
# 安装依赖
sudo apt update
sudo apt install -y ca-certificates curl gnupg
# 添加 Docker 官方 GPG key
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# 添加 apt 源(Debian 用户需将 ubuntu 替换为 debian)
echo "deb [arch=$(dpkg --print-architecture) \
signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装 Docker 引擎及插件
sudo apt update
sudo apt install -y \
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin
# 启动并设置开机自启
sudo systemctl enable --now docker
# 将当前用户加入 docker 组
sudo usermod -aG docker $USER注意:Debian 系统需将上面 URL 中的
ubuntu替换为debian,
并确认$VERSION_CODENAME对应正确的代号(如 bookworm)。
1.3 Fedora/RHEL/CentOS 安装
Fedora
# 安装 dnf 管理插件
sudo dnf -y install dnf-plugins-core
# 添加 Docker 官方仓库
sudo dnf config-manager --add-repo \
https://download.docker.com/linux/fedora/docker-ce.repo
# 安装 Docker 组件
sudo dnf install -y \
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin
# 启动服务
sudo systemctl enable --now docker
# 配置用户权限
sudo usermod -aG docker $USERCentOS / RHEL 8+
# 安装 yum-utils
sudo yum install -y yum-utils
# 添加 Docker 官方仓库
sudo yum-config-manager --add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# 安装 Docker 组件
sudo yum install -y \
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin
# 启动服务
sudo systemctl enable --now docker
# 配置用户权限
sudo usermod -aG docker $USERCentOS 7 注意:CentOS 7 已停止维护,建议迁移到 Rocky Linux 或 AlmaLinux。
若仍需使用,需额外安装 containerd.io 的 EPEL 版本。
1.4 Arch Linux 安装
# 安装 Docker 及相关工具
sudo pacman -S docker docker-compose docker-buildx
# 启动并启用开机自启
sudo systemctl enable --now docker.service
# 将当前用户加入 docker 组
sudo usermod -aG docker $USERArch 的 Docker 包通常保持最新版本,适合开发和滚动更新环境。
安装后重新登录终端即可使用。
1.5 macOS 安装
Docker Desktop
Docker Desktop 是 macOS 上最常用的 Docker 运行方式。
- 访问 https://www.docker.com/products/docker-desktop/ 下载安装包
- 双击
.dmg文件,将 Docker 拖入 Applications 文件夹 - 首次启动需授权系统扩展和网络权限
- 等待状态栏图标变为稳定状态(无红色警告)
Docker Desktop 包含 Docker Engine、Docker CLI、Docker Compose、
Docker Buildx 以及内置的 Kubernetes 集群。
使用 Homebrew 安装 Colima(轻量替代方案)
Colima 是基于 Lima 的轻量级容器运行时,不依赖 Docker Desktop。
# 安装 Colima 和 Docker CLI
brew install colima docker docker-compose
# 启动 Colima(默认分配 2 CPU、2GB 内存)
colima start
# 自定义资源配置启动
colima start --cpu 4 --memory 8 --disk 60
# 验证 Docker 连接
docker ps
# 查看 Colima 状态
colima status
# 停止 Colima
colima stopColima 适合不希望安装 Docker Desktop 的开发者,且对 Apple Silicon 支持良好。
1.6 Windows 安装
前提:启用 WSL2
Docker Desktop 在 Windows 上依赖 WSL2(Windows Subsystem for Linux 2)。
# 以管理员身份运行 PowerShell
wsl --install重启计算机后,系统会自动安装 Ubuntu 发行版。
按提示设置 Ubuntu 用户名和密码。
确认 WSL 版本为 2:
wsl --list --verbose
# 确保 VERSION 列显示 2
wsl --set-default-version 2安装 Docker Desktop
- 访问 https://www.docker.com/products/docker-desktop/ 下载安装程序
- 运行安装程序,安装时勾选 “Use WSL 2 instead of Hyper-V”
- 安装完成后启动 Docker Desktop
- 进入 Settings > Resources > WSL Integration
- 启用已安装的 Ubuntu 发行版
验证安装
# 在 WSL 终端中执行
docker run --rm hello-world若输出 “Hello from Docker!” 则表示安装成功。
注意:Windows 容器(Linux 容器的替代模式)仅适用于特定场景,
日常开发推荐使用 WSL2 后端的 Linux 容器模式。
1.7 daemon.json 配置详解
daemon.json 是 Docker 守护进程的核心配置文件。
- Linux 系统路径:
/etc/docker/daemon.json - Docker Desktop:通过 Settings > Docker Engine 进行编辑
- 若文件不存在需手动创建:
sudo touch /etc/docker/daemon.json
镜像加速器
在国内网络环境下,配置镜像加速器可显著提升拉取速度。
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com",
"https://docker.m.daocloud.io"
]
}可用的公共镜像加速器地址会随时间变化,请确认其可用性。
数据目录(迁移磁盘)
默认 Docker 数据存储在 /var/lib/docker,大容量镜像可迁移至其他磁盘。
{
"data-root": "/data/docker"
}修改前需先迁移已有数据:
# 停止 Docker
sudo systemctl stop docker
# 迁移数据
sudo rsync -aP /var/lib/docker/ /data/docker/
# 修改 daemon.json 后启动
sudo systemctl start docker日志配置
防止容器日志无限增长耗尽磁盘空间。
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}max-size:单个日志文件最大体积max-file:保留的日志文件数量- 超出限制后自动轮转删除旧日志
DNS 配置
为容器指定 DNS 服务器,解决域名解析问题。
{
"dns": ["8.8.8.8", "114.114.114.114"]
}可根据实际网络环境调整,内网环境可添加内部 DNS 地址。
存储驱动
{
"storage-driver": "overlay2"
}overlay2 是目前推荐的存储驱动,兼容性好、性能优秀。
大多数现代 Linux 内核(3.18+)均支持。
私有仓库(不安全注册表)
允许连接使用 HTTP 协议的私有镜像仓库(生产环境不推荐)。
{
"insecure-registries": ["192.168.1.100:5000"]
}安全提醒:生产环境应配置 TLS 证书,避免明文传输镜像数据。
完整生产配置模板
以下配置适用于生产服务器,可根据实际需求调整参数。
{
"storage-driver": "overlay2",
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"dns": ["8.8.8.8", "114.114.114.114"],
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"],
"data-root": "/data/docker",
"default-ulimits": {
"nofile": {
"Name": "nofile",
"Hard": 65536,
"Soft": 65536
}
},
"live-restore": true,
"userland-proxy": false,
"max-concurrent-downloads": 10
}各参数说明:
| 参数 | 作用 |
|---|---|
storage-driver | 存储驱动,推荐 overlay2 |
log-driver | 日志驱动,json-file 最常用 |
log-opts | 日志轮转策略,防磁盘爆满 |
dns | 容器默认 DNS 服务器 |
registry-mirrors | 镜像加速器列表 |
data-root | Docker 数据存储根目录 |
default-ulimits | 容器默认 ulimit 限制,提高文件描述符上限 |
live-restore | 守护进程重启时保持容器运行 |
userland-proxy | 禁用用户态代理,使用 iptables 提高性能 |
max-concurrent-downloads | 最大并行下载数 |
应用配置
修改 daemon.json 后需重新加载并重启 Docker 服务。
# 重新加载 systemd 配置
sudo systemctl daemon-reload
# 重启 Docker 服务
sudo systemctl restart docker
# 验证配置是否生效
docker info | grep -A 20 "Docker Root Dir"
docker info | grep "Registry Mirrors"
docker info | grep "Logging Driver"确认输出中显示的配置项与 daemon.json 中的设置一致。
1.8 验证安装
完成安装和配置后,执行以下命令确认 Docker 运行正常。
版本信息
# 查看 Docker 版本
docker version
# 查看详细系统信息
docker infodocker version 会分别显示 Client 和 Server(daemon)的版本号。
若 Server 部分无输出,说明 Docker 服务未启动或未正确安装。
运行测试容器
# 运行官方测试镜像
docker run --rm hello-world该命令从 Docker Hub 拉取 hello-world 镜像并运行。
输出 “Hello from Docker!” 即表示安装和网络均正常。
运行交互式容器
# 进入 Alpine Linux 交互式终端
docker run -it alpine sh
# 查看系统信息
cat /etc/os-release
# 退出容器
exit交互式容器验证了容器的创建、运行、交互和退出全流程。
查看服务状态
# 查看 Docker 服务状态
sudo systemctl status docker
# 查看 Docker 进程信息
docker info | head -20确保服务状态为 active (running),无异常报错。
常见问题
权限问题:permission denied
执行 docker 命令时出现 permission denied 错误。
# 解决方案:将用户加入 docker 组
sudo usermod -aG docker $USER
# 立即生效(无需重新登录)
newgrp docker无法拉取镜像:timeout 或 connection refused
通常是网络问题,配置镜像加速器可解决。
# 检查当前镜像源配置
docker info | grep -A 5 "Registry Mirrors"
# 测试网络连通性
curl -I https://registry-1.docker.io/v2/服务启动失败
# 查看详细日志
sudo journalctl -xeu docker.service
# 常见原因:daemon.json 格式错误
sudo cat /etc/docker/daemon.json
# 使用 python 验证 JSON 格式
python3 -m json.tool /etc/docker/daemon.json磁盘空间不足
# 查看 Docker 磁盘占用
docker system df
# 清理无用资源
docker system prune -a
# 清理已停止的容器
docker container prune
# 清理悬空镜像
docker image pruneWSL2 相关问题(Windows)
# 确认 WSL2 已启用
wsl --status
# 更新 WSL 内核
wsl --update
# 重启 WSL
wsl --shutdown卸载 Docker
若需彻底卸载 Docker,按以下步骤操作。
Linux 卸载
# 卸载 Docker 组件
sudo apt purge 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 -rf /etc/docker
sudo rm /etc/apt/sources.list.d/docker.list
sudo rm /etc/apt/keyrings/docker.gpg
# 删除 Docker 组
sudo groupdel dockermacOS 卸载
# 卸载 Docker Desktop
brew uninstall --cask docker
# 或手动删除
rm -rf /Applications/Docker.app
rm -rf ~/Library/Group\ Containers/group.com.docker
rm -rf ~/Library/Containers/com.docker.docker
rm -rf ~/.dockerWindows 卸载
通过 Settings > Apps > Docker Desktop 执行卸载,
或使用 PowerShell:
wsl --unregister docker-desktop
wsl --unregister docker-desktop-data参考资源
- Docker 官方文档:https://docs.docker.com/
- Docker Hub:https://hub.docker.com/
- Docker GitHub:https://github.com/docker
- daemon.json 官方文档:https://docs.docker.com/engine/daemon/