Docker: 安装Docker与环境配置

最后更新:2026-08-26

Docker 的安装比你想象的简单——无论你用 Windows、Mac 还是 Linux,10 分钟内就能拥有一个完整的容器运行环境。

1. 你将学到


2. 一个团队的技术负责人真实故事

(1) 痛点:15 个人的环境各不相同

Charlie 的团队刚决定全面采用 Docker,但新成员 Lisa 问:"我该装 Docker Desktop 还是 Docker Engine?Mac 和 Linux 装法一样吗?"团队 15 个人用了 4 种操作系统(Windows/Mac/Ubuntu/CentOS),每种装法都不同,光是搭环境就花了 2 天。

(2) 安装决策树的解法

Charlie 画了一张安装决策树——3 种 OS × 2 种模式,让团队 15 分钟内全部就绪。

BASH
# Verify Docker installation after setup
docker run hello-world

(3) 收益:统一环境零摩擦

团队统一安装后,每个人 docker version 输出一致,环境问题从每周 5 次降到 0 次。


3. Docker Desktop vs Docker Engine

安装 Docker 前,先理解两种发行版的区别。

100%
graph TB
    START["选择 Docker 版本"] --> OS{"你的操作系统?"}
    OS -->|Windows / Mac| DT["Docker Desktop<br/>含 GUI + VM + CLI"]
    OS -->|Linux Server| DE["Docker Engine<br/>纯 CLI 服务"]
    DT --> DEV["✅ 开发环境推荐"]
    DE --> PROD["✅ 生产环境推荐"]

(1) 两种发行版对比

维度 Docker Desktop Docker Engine
包含组件 CLI + Daemon + GUI + VM CLI + Daemon(纯后台服务)
适用平台 Windows / Mac / Linux 仅 Linux
资源占用 较高(含虚拟机 2-4 GB) 低(直接跑在主机内核)
GUI 管理 ✅ 有 Dashboard ❌ 纯命令行
适用场景 开发者个人电脑 服务器/CI 环境
价格 个人免费,企业付费 完全免费(CE 版)

(2) 安装决策流程

条件 推荐版本
Windows / Mac 开发 Docker Desktop
Linux 桌面开发 Docker Desktop(需 GUI)或 Engine
Linux 服务器生产 Docker Engine
CI/CD 构建节点 Docker Engine
💡 提示: Docker Desktop 在 Linux 上也有版本,但大多数 Linux 开发者更倾向于直接用 Docker Engine——更轻量,没有额外的虚拟化层。


4. 各平台安装步骤

(1) Windows 安装

前提条件:

安装步骤:

步骤 操作
1 下载 Docker Desktop for Windows(docker.com/products/docker-desktop)
2 双击安装程序,确保勾选"Use WSL 2 instead of Hyper-V"
3 安装完成后重启电脑
4 启动 Docker Desktop,等待状态变为"Running"
5 打开终端验证:docker version

(2) Mac 安装

步骤 操作
1 下载 Docker Desktop for Mac(Intel 芯片选 amd64,Apple Silicon 选 arm64)
2 拖拽 Docker.app 到 Applications 文件夹
3 启动 Docker.app,等待菜单栏鲸鱼图标稳定
4 终端验证:docker version

(3) Linux 安装(Ubuntu/Debian)

BASH
# 1. Update package index
sudo apt-get update

# 2. Install prerequisites
sudo apt-get install -y ca-certificates curl gnupg

# 3. Add Docker's official 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

# 4. Add Docker repository
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

# 5. Install Docker Engine
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 6. Start Docker
sudo systemctl start docker
sudo systemctl enable docker

# 7. Verify
sudo docker run hello-world

5. 非 root 用户配置

默认情况下,Linux 上只有 root 用户和 docker 组成员能运行 Docker。

▶ 示例:将当前用户加入 docker 组(难度⭐)

BASH
# Add current user to docker group
sudo usermod -aG docker $USER

# Apply group change (or log out and back in)
newgrp docker

# Verify: run docker without sudo
docker run hello-world
⚠️ 注意: 加入 docker 组等同于拥有 root 权限(因为容器可以挂载主机任意目录)。生产环境应严格控制 docker 组成员。


6. 镜像加速器配置

国内访问 Docker Hub 可能很慢,配置镜像加速器可大幅提升拉取速度。

(1) 主流镜像加速器

加速器 地址 说明
阿里云 https://<your-id>.mirror.aliyuncs.com 需登录获取专属地址
中科大 https://docker.mirrors.ustc.edu.cn 免费,无需注册
网易 https://hub-mirror.c.163.com 免费
Docker 官方 https://registry.docker.io 默认,国外速度快

▶ 示例:config Linux 下的镜像加速器(难度⭐⭐)

BASH
# Create or edit Docker daemon configuration
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<'EOF'
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com"
  ]
}
EOF

# Restart Docker to apply changes
sudo systemctl daemon-reload
sudo systemctl restart docker

# Verify the configuration
docker info | grep -A 5 "Registry Mirrors"
💻 输出:

TEXT 📖 仅展示
Registry Mirrors:
  https://docker.mirrors.ustc.edu.cn/
  https://hub-mirror.c.163.com/

▶ 示例:配置 Docker Desktop 镜像加速器(难度⭐)

在 Docker Desktop GUI 中配置:Settings → Docker Engine → 在 JSON 中添加 registry-mirrors 数组 → Apply & Restart。

或者直接编辑配置文件(Mac: ~/.docker/daemon.json,Windows: C:\Users\<user>\.docker\daemon.json)。


7. Docker 上下文管理

Docker 上下文(Context)让你在多个 Docker 主机之间快速切换——例如本地 Docker 和远程服务器。

▶ 示例:查看和切换 Docker 上下文(难度⭐⭐)

BASH
# List all Docker contexts
docker context ls
💻 输出:

TEXT 📖 仅展示
NAME                TYPE                DESCRIPTION
default *           moby                Current DOCKER_HOST based configuration
remote-server       moby                Remote Docker on 10.0.1.100
BASH
# Create a new context for a remote Docker host
docker context create remote-server --docker "host=ssh://user@10.0.1.100"

# Switch to the remote context
docker context use remote-server

# Verify: now all docker commands run on the remote server
docker ps

# Switch back to local
docker context use default

▶ 示例:验证安装成功(难度⭐)

BASH
# Full verification checklist
docker version          # Client + Server versions
docker info             # System-wide info
docker run hello-world  # End-to-end test

8. 常见安装问题排查

问题 原因 解决方法
Cannot connect to the Docker daemon Docker 服务未启动 sudo systemctl start docker
permission denied while trying to connect 用户不在 docker 组 sudo usermod -aG docker $USER
WSL2 installation is incomplete (Windows) WSL2 未正确安装 wsl --install 后重启
docker: command not found Docker 未加入 PATH 重新安装或手动添加 PATH
镜像拉取超时 网络问题 配置镜像加速器

9. 完整示例:从零配置 Ubuntu 服务器 Docker 环境

BASH
# ============================================
# Complete walkthrough: Install Docker on Ubuntu
# Covers: install, sudo-free, mirror, verify
# ============================================

# 1. Install Docker Engine
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
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
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
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 2. Start and enable Docker service
sudo systemctl start docker
sudo systemctl enable docker

# 3. Add current user to docker group (no more sudo)
sudo usermod -aG docker $USER
newgrp docker

# 4. Configure registry mirror for faster pulls
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<'EOF'
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn"
  ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

# 5. Verify: run Nginx and access it
docker run -d -p 8080:80 --name test-nginx nginx:latest
curl http://localhost:8080

# 6. Clean up
docker stop test-nginx
docker rm test-nginx
💻 输出(节选):

TEXT 📖 仅展示
# docker run -d -p 8080:80 --name test-nginx nginx:latest
a1b2c3d4e5f6...

# curl http://localhost:8080
<!DOCTYPE html>
<html><head><title>Welcome to nginx!</title>...

❓ 常见问题

Q Docker Desktop 免费吗?
A 个人使用和小企业(<250 员工、<10 million USD 年收入)免费。大企业需购买 Docker Business 订阅($24/用户/月起)。Docker Engine(Linux 版)始终免费开源。
Q Linux 上为什么推荐用 Engine 而不是 Desktop?
A Docker Engine 直接运行在主机内核上,无额外虚拟化层,资源占用更低、性能更好。Desktop 在 Linux 上需要运行一个虚拟机来提供 GUI,多了一层开销。服务器环境不需要 GUI,用 Engine 最合适。
Q 镜像加速器安全吗?
A 主流加速器(阿里云/中科大/网易)都是可信的 CDN 代理,只缓存官方镜像不修改内容。但加速器只加速 pull(拉取),push(推送)仍走 Docker Hub 原始路径。公司内部建议搭建私有 Registry。
Q 怎么验证 Docker 安装成功?
A 三步验证法:① docker version 看到 Client 和 Server 两部分信息;② docker info 能正常输出;③ docker run hello-world 输出 "Hello from Docker!"。三步都通过说明安装完整。
Q WSL2 和 Hyper-V 怎么选?
A 优先选 WSL2——启动更快、内存占用更动态、与 Windows 集成更好。Hyper-V 仅在 WSL2 不可用时(如旧版 Windows 10)使用。Docker Desktop 默认推荐 WSL2 模式。
Q Docker 安装后占多少磁盘空间?
A Docker Engine 约 300 MB,Docker Desktop(含虚拟机)约 2-4 GB。随着拉取镜像和创建容器,空间会持续增长,可用 docker system df 查看占用,docker system prune 清理。

📖 小节


📝 作业

  1. 基础题(难度⭐):在本机安装 Docker,运行 docker run hello-world 并截图保存输出。
  2. 进阶题(难度⭐⭐):配置一个国内镜像加速器,运行 docker info | grep -A 5 "Registry Mirrors" 确认配置生效。
  3. 挑战题(难度⭐⭐⭐):运行 docker run -d -p 8080:80 nginx 启动 Nginx,用浏览器访问 http://localhost:8080 确认页面正常显示,然后用 docker stopdocker rm 清理容器。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏