Docker 安装与配置完全指南

本文档覆盖 Linux、macOS、Windows 三大平台的 Docker 安装流程,
以及 daemon.json 的详细配置说明。适用于 Docker Engine 24.x / Docker Desktop 4.x。


1. 安装前准备

系统要求

平台最低要求
Linux内核 3.10+,64 位系统(x86_64 / aarch64)
macOSmacOS 12+(Monterey 及以上),Apple Silicon 或 Intel
WindowsWindows 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 $USER

CentOS / 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 $USER

CentOS 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 $USER

Arch 的 Docker 包通常保持最新版本,适合开发和滚动更新环境。
安装后重新登录终端即可使用。


1.5 macOS 安装

Docker Desktop

Docker Desktop 是 macOS 上最常用的 Docker 运行方式。

  1. 访问 https://www.docker.com/products/docker-desktop/ 下载安装包
  2. 双击 .dmg 文件,将 Docker 拖入 Applications 文件夹
  3. 首次启动需授权系统扩展和网络权限
  4. 等待状态栏图标变为稳定状态(无红色警告)

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 stop

Colima 适合不希望安装 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

  1. 访问 https://www.docker.com/products/docker-desktop/ 下载安装程序
  2. 运行安装程序,安装时勾选 “Use WSL 2 instead of Hyper-V”
  3. 安装完成后启动 Docker Desktop
  4. 进入 Settings > Resources > WSL Integration
  5. 启用已安装的 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-rootDocker 数据存储根目录
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 info

docker 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 prune

WSL2 相关问题(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 docker

macOS 卸载

# 卸载 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 ~/.docker

Windows 卸载

通过 Settings > Apps > Docker Desktop 执行卸载,
或使用 PowerShell:

wsl --unregister docker-desktop
wsl --unregister docker-desktop-data

参考资源