Docker 安装配置完全指南:macOS 、win、linux环境下的安装、配置与验证
TL;DR:在 macOS 上通过 Docker Desktop 一键安装 Docker 引擎和 Docker Compose,并用 3 条命令完成验证。
目录
文章目录
- [Docker 安装配置完全指南:macOS 、win、linux环境下的安装、配置与验证](#Docker 安装配置完全指南:macOS 、win、linux环境下的安装、配置与验证)
-
- 目录
- [一、为什么需要 Docker?](#一、为什么需要 Docker?)
- 二、环境要求
- [三、安装 Docker Desktop](#三、安装 Docker Desktop)
-
- 方式一:官网下载安装(推荐)
-
- [步骤 1:下载安装包](#步骤 1:下载安装包)
- [步骤 2:安装](#步骤 2:安装)
- [步骤 3:同意许可协议](#步骤 3:同意许可协议)
- [方式二:Homebrew 安装(命令行)](#方式二:Homebrew 安装(命令行))
- [四、Docker Compose 说明](#四、Docker Compose 说明)
-
- [Compose V1 vs V2 语法对比](#Compose V1 vs V2 语法对比)
- 五、验证安装
-
- [验证 1:检查 Docker 版本](#验证 1:检查 Docker 版本)
- [验证 2:检查 Docker Compose 版本](#验证 2:检查 Docker Compose 版本)
- [验证 3:运行 hello-world 容器](#验证 3:运行 hello-world 容器)
- 验证结果速查表
- [六、Docker Desktop 基础配置](#六、Docker Desktop 基础配置)
- 七、常用命令速查
- 八、故障排查
- [九、推荐工具:轩辕镜像一键安装 Docker](#九、推荐工具:轩辕镜像一键安装 Docker)
- 十、总结
一、为什么需要 Docker?
Docker 是一个容器化平台,能把应用和它的所有依赖(运行时、库、配置文件)打包成一个标准化的镜像,在任何机器上"一次构建,到处运行"。
核心价值:
| 场景 | 没有 Docker | 有 Docker |
|---|---|---|
| 环境搭建 | 手动装 JDK、MySQL、Redis,版本冲突频繁 | docker-compose up 一键启动全部服务 |
| 团队协作 | "我电脑上能跑啊" | 镜像即环境,人人一致 |
| 部署上线 | 运维手写部署脚本,不同服务器各一套 | 镜像直接部署,环境零差异 |
| 学习新技术 | 装一堆软件,卸载不干净 | 容器用完即删,主机零污染 |
!NOTE
Docker 有两个核心概念:镜像(Image) 是只读模板,容器(Container) 是镜像的运行实例。类比:镜像是类(Class),容器是对象(Instance)。
二、环境要求
硬件要求
| 项目 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 双核 | 四核及以上 |
| 内存 | 4 GB | 8 GB 及以上 |
| 磁盘 | 10 GB 可用空间 | 20 GB 及以上(镜像会占空间) |
系统要求
| 操作系统 | 最低版本 | 备注 |
|---|---|---|
| macOS(Intel) | 12 (Monterey) | 芯片:x86_64 |
| macOS(Apple Silicon) | 12 (Monterey) | 芯片:M1/M2/M3/M4 |
安装前检查
打开终端,确认当前系统信息:
bash
# 查看 macOS 版本和芯片架构
sw_vers && uname -m
预期输出(Intel Mac):
ProductName: macOS
ProductVersion: 14.6
BuildVersion: 23G80
x86_64
预期输出(Apple Silicon Mac):
ProductName: macOS
ProductVersion: 15.0
BuildVersion: 24A335
arm64
!IMPORTANT
Intel 和 Apple Silicon 的 Docker Desktop 安装包不同,下载时务必选对版本。
uname -m输出x86_64选 Intel 版,arm64选 Apple Silicon 版。
三、安装 Docker Desktop
macOS 上安装 Docker 有两种方式:Docker Desktop(推荐) 和 Homebrew 命令行安装。下面分别介绍。
方式一:官网下载安装(推荐)
步骤 1:下载安装包
访问 Docker 官方下载页面:https://www.docker.com/products/docker-desktop/
根据你的芯片选择对应版本:
| 芯片 | 下载按钮 |
|---|---|
| Intel(x86_64) | Download for Mac - Intel Chip |
| Apple Silicon(M1/M2/M3/M4) | Download for Mac - Apple Silicon |
步骤 2:安装
bash
# 下载完成后,双击 .dmg 文件打开
# 将 Docker 图标拖入 Applications 文件夹
# 然后从 Launchpad 或 Applications 启动 Docker
首次启动时,Docker Desktop 会请求以下权限:
| 权限 | 用途 | 建议 |
|---|---|---|
| 辅助功能 | 系统托盘图标交互 | 允许 |
| 网络 | 容器网络通信 | 允许 |
启动完成后,菜单栏会出现一个鲸鱼图标,表示 Docker 引擎正在运行。
步骤 3:同意许可协议
首次启动会弹出许可协议,点击 Accept 即可。如果不想创建 Docker 账号,可以点击 Skip 跳过登录。
方式二:Homebrew 安装(命令行)
如果你已经安装了 Homebrew,可以用一条命令完成:
bash
brew install --cask docker
安装完成后,启动 Docker Desktop:
bash
open -a Docker
!TIP
推荐用 Homebrew 安装,后续升级只需
brew upgrade --cask docker,比手动下载 .dmg 方便。
四、Docker Compose 说明
Docker Compose 不需要单独安装。 从 Docker Desktop 4.x 开始,Docker Compose V2 已经作为 Docker CLI 的插件内置。
验证方式:
bash
# Compose V2 的命令格式(推荐)
docker compose version
# Compose V1 的旧命令格式(已废弃,但向后兼容)
docker-compose version
!WARNING
Docker Compose V1(独立安装的
docker-compose命令)已于 2023 年 6 月停止维护。如果你的项目还在用docker-compose(带连字符),建议迁移到docker compose(空格分隔)的 V2 语法。
Compose V1 vs V2 语法对比
| 操作 | V1(旧) | V2(新) |
|---|---|---|
| 启动服务 | docker-compose up -d |
docker compose up -d |
| 停止服务 | docker-compose down |
docker compose down |
| 查看日志 | docker-compose logs -f |
docker compose logs -f |
| 查看状态 | docker-compose ps |
docker compose ps |
区别只有一个:连字符 - 变成了空格。功能完全一致。
五、验证安装
安装完成后,依次执行以下 3 个验证步骤,确认 Docker 和 Docker Compose 正常工作。
验证 1:检查 Docker 版本
bash
docker --version
预期输出:
Docker version 29.6.1, build 8900f1d
版本号可能不同,只要能看到
Docker version开头的输出就说明客户端安装成功。
验证 2:检查 Docker Compose 版本
bash
docker compose version
预期输出:
Docker Compose version v5.2.0
验证 3:运行 hello-world 容器
这是最完整的验证,它会测试 Docker 的完整工作流:客户端 → 守护进程 → 镜像拉取 → 容器运行。
bash
docker run hello-world
预期输出:
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
4f55086f7dd0: Pulling fs layer
d5e71e642bf5: Download complete
4f55086f7dd0: Download complete
4f55086f7dd0: Pull complete
Digest: sha256:96498ffd522e...
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
看到 Hello from Docker! 就说明安装完全成功。
验证结果速查表
| 命令 | 成功标志 | 失败原因 |
|---|---|---|
docker --version |
输出版本号 | Docker 未安装或不在 PATH 中 |
docker compose version |
输出版本号 | Docker Desktop 未启动 |
docker run hello-world |
输出 "Hello from Docker!" | 网络不通或 Docker 守护进程异常 |
六、Docker Desktop 基础配置
安装完成后,建议调整以下配置以获得更好的使用体验。
打开设置
点击菜单栏鲸鱼图标 → Settings (或快捷键 Cmd + ,)。
推荐配置
Resources(资源配置)
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| CPUs | 2-4 核 | 根据机器配置调整,不要超过物理核心的一半 |
| Memory | 4-8 GB | 跑大型项目建议 8 GB |
| Disk image size | 60 GB+ | 镜像和容器数据会持续增长 |
| Swap | 2 GB | 默认即可 |
General(通用设置)
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| Start Docker Desktop when you sign in | ✅ 开启 | 开机自启,避免每次手动启动 |
| Use Enhanced Container Isolation | ❌ 关闭 | 开发环境不需要,会影响性能 |
配置国内镜像加速(可选)
由于 Docker Hub 在国内访问较慢,可以配置镜像加速器。
进入 Settings → Docker Engine,在 JSON 配置中添加:
json
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com",
"https://docker.m.daocloud.io"
]
}
点击 Apply & restart 生效。
!WARNING
国内镜像加速站的可用性经常变化,如果拉取镜像很慢或超时,需要搜索最新的可用镜像地址替换。
七、常用命令速查
安装验证完成后,以下是日常开发中最常用的 Docker 命令:
镜像操作
bash
# 拉取镜像
docker pull nginx:latest
# 查看本地镜像
docker images
# 删除镜像
docker rmi nginx:latest
# 清理无用镜像(悬空镜像)
docker image prune -f
容器操作
bash
# 运行容器(后台模式,映射端口 8080→80)
docker run -d --name my-nginx -p 8080:80 nginx
# 查看运行中的容器
docker ps
# 查看所有容器(含已停止)
docker ps -a
# 查看容器日志
docker logs -f my-nginx
# 进入容器内部
docker exec -it my-nginx /bin/bash
# 停止容器
docker stop my-nginx
# 删除容器
docker rm my-nginx
Docker Compose 操作
bash
# 启动所有服务(后台运行)
docker compose up -d
# 停止并删除所有服务
docker compose down
# 查看服务状态
docker compose ps
# 查看日志
docker compose logs -f
# 重新构建并启动
docker compose up -d --build
八、故障排查
错误:Cannot connect to the Docker daemon
现象:
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock.
Is the docker daemon running?
原因: Docker Desktop 未启动,或守护进程异常退出。
解决方案:
- 检查菜单栏是否有鲸鱼图标,没有则启动 Docker Desktop
- 等待鲸鱼图标停止动画(表示引擎启动完成)
- 如果已启动但仍报错,尝试重启 Docker Desktop:
bash
osascript -e 'quit app "Docker"' && open -a Docker
错误:permission denied
现象:
docker: permission denied while trying to connect to the Docker daemon socket
原因: 当前用户没有访问 Docker socket 的权限。
解决方案:
macOS 上通常不会出现此问题(Docker Desktop 会自动处理权限)。如果出现,重启 Docker Desktop 即可:
bash
sudo killall Docker && open -a Docker
错误:拉取镜像超时
现象:
Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection
原因: 国内访问 Docker Hub 网络不稳定。
解决方案:
- 配置镜像加速器(参见第六节)
- 如果加速器也不可用,使用代理:
bash
# 在 Docker Desktop → Settings → Resources → Proxies 中配置
# HTTP Proxy: http://127.0.0.1:7890
# HTTPS Proxy: http://127.0.0.1:7890
错误:端口已被占用
现象:
Error: bind: address already in use
原因: 容器要映射的端口已被其他程序占用。
解决方案:
bash
# 查看端口被哪个进程占用
lsof -i :8080
# 换一个端口映射
docker run -d -p 8888:80 nginx
九、推荐工具:轩辕镜像一键安装 Docker
如果你在 Linux 服务器上安装 Docker,或者觉得 Docker Desktop 的安装步骤太繁琐,可以使用轩辕镜像提供的一键安装脚本。
什么是轩辕镜像?
轩辕镜像是国内的 Docker 镜像加速服务,除了提供镜像拉取加速外,还封装了一键安装 Docker 的脚本,支持主流 Linux 发行版(CentOS、Ubuntu、Debian 等),自动完成 Docker 引擎和 Docker Compose 的安装配置。
一键安装命令
bash
bash <(wget -qO- https://xuanyuan.cloud/docker.sh)
这条命令会:
- 下载轩辕镜像的安装脚本
- 自动检测系统版本(CentOS/Ubuntu/Debian)
- 配置 Docker 官方源或国内镜像源
- 安装 Docker Engine 和 Docker Compose
- 启动 Docker 服务并设置开机自启
!TIP
安装完成后,脚本会自动输出验证信息。你可以运行
docker --version和docker compose version确认安装成功。
相关链接
| 资源 | 链接 |
|---|---|
| 官方网站 | https://xuanyuan.cloud/ |
| 邀请链接 | https://xuanyuan.cloud/?code=Y97PK4 |
!NOTE
通过邀请链接注册可以获得额外福利。如果你已经在用轩辕镜像的加速服务,一键安装脚本会自动复用已有的镜像源配置。
适用场景
| 场景 | 推荐方式 |
|---|---|
| macOS 开发环境 | Docker Desktop(本文第三、四节) |
| Linux 服务器部署 | 轩辕镜像一键安装脚本 |
| CI/CD 环境 | 官方安装脚本 + 手动配置 |
十、总结
安装步骤回顾
#mermaid-svg-PmHWQ7wjUwkatyhQ{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-PmHWQ7wjUwkatyhQ .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-PmHWQ7wjUwkatyhQ .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-PmHWQ7wjUwkatyhQ .error-icon{fill:#552222;}#mermaid-svg-PmHWQ7wjUwkatyhQ .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-PmHWQ7wjUwkatyhQ .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-PmHWQ7wjUwkatyhQ .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-PmHWQ7wjUwkatyhQ .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-PmHWQ7wjUwkatyhQ .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-PmHWQ7wjUwkatyhQ .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-PmHWQ7wjUwkatyhQ .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-PmHWQ7wjUwkatyhQ .marker{fill:#333333;stroke:#333333;}#mermaid-svg-PmHWQ7wjUwkatyhQ .marker.cross{stroke:#333333;}#mermaid-svg-PmHWQ7wjUwkatyhQ svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-PmHWQ7wjUwkatyhQ p{margin:0;}#mermaid-svg-PmHWQ7wjUwkatyhQ .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-PmHWQ7wjUwkatyhQ .cluster-label text{fill:#333;}#mermaid-svg-PmHWQ7wjUwkatyhQ .cluster-label span{color:#333;}#mermaid-svg-PmHWQ7wjUwkatyhQ .cluster-label span p{background-color:transparent;}#mermaid-svg-PmHWQ7wjUwkatyhQ .label text,#mermaid-svg-PmHWQ7wjUwkatyhQ span{fill:#333;color:#333;}#mermaid-svg-PmHWQ7wjUwkatyhQ .node rect,#mermaid-svg-PmHWQ7wjUwkatyhQ .node circle,#mermaid-svg-PmHWQ7wjUwkatyhQ .node ellipse,#mermaid-svg-PmHWQ7wjUwkatyhQ .node polygon,#mermaid-svg-PmHWQ7wjUwkatyhQ .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-PmHWQ7wjUwkatyhQ .rough-node .label text,#mermaid-svg-PmHWQ7wjUwkatyhQ .node .label text,#mermaid-svg-PmHWQ7wjUwkatyhQ .image-shape .label,#mermaid-svg-PmHWQ7wjUwkatyhQ .icon-shape .label{text-anchor:middle;}#mermaid-svg-PmHWQ7wjUwkatyhQ .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-PmHWQ7wjUwkatyhQ .rough-node .label,#mermaid-svg-PmHWQ7wjUwkatyhQ .node .label,#mermaid-svg-PmHWQ7wjUwkatyhQ .image-shape .label,#mermaid-svg-PmHWQ7wjUwkatyhQ .icon-shape .label{text-align:center;}#mermaid-svg-PmHWQ7wjUwkatyhQ .node.clickable{cursor:pointer;}#mermaid-svg-PmHWQ7wjUwkatyhQ .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-PmHWQ7wjUwkatyhQ .arrowheadPath{fill:#333333;}#mermaid-svg-PmHWQ7wjUwkatyhQ .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-PmHWQ7wjUwkatyhQ .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-PmHWQ7wjUwkatyhQ .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-PmHWQ7wjUwkatyhQ .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-PmHWQ7wjUwkatyhQ .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-PmHWQ7wjUwkatyhQ .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-PmHWQ7wjUwkatyhQ .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-PmHWQ7wjUwkatyhQ .cluster text{fill:#333;}#mermaid-svg-PmHWQ7wjUwkatyhQ .cluster span{color:#333;}#mermaid-svg-PmHWQ7wjUwkatyhQ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-PmHWQ7wjUwkatyhQ .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-PmHWQ7wjUwkatyhQ rect.text{fill:none;stroke-width:0;}#mermaid-svg-PmHWQ7wjUwkatyhQ .icon-shape,#mermaid-svg-PmHWQ7wjUwkatyhQ .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-PmHWQ7wjUwkatyhQ .icon-shape p,#mermaid-svg-PmHWQ7wjUwkatyhQ .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-PmHWQ7wjUwkatyhQ .icon-shape .label rect,#mermaid-svg-PmHWQ7wjUwkatyhQ .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-PmHWQ7wjUwkatyhQ .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-PmHWQ7wjUwkatyhQ .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-PmHWQ7wjUwkatyhQ :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 推荐
备选
是
否
检查系统要求
选择安装方式
Homebrew 安装
brew install --cask docker
官网下载 .dmg
启动 Docker Desktop
验证:docker --version
验证:docker compose version
验证:docker run hello-world
全部通过?
安装完成 ✅
参见故障排查
核心要点
| 要点 | 说明 |
|---|---|
| 安装方式 | 推荐 Homebrew,一条命令搞定 |
| Docker Compose | 内置于 Docker Desktop,无需单独安装 |
| 验证三步走 | docker --version → docker compose version → docker run hello-world |
| 镜像加速 | 国内用户建议配置镜像加速器 |
| 开机自启 | 建议开启,避免忘记启动 Docker |
下一步
安装完成后,你可以:
- 编写
docker-compose.yml文件,用 Compose 编排多容器应用 - 学习 Dockerfile 编写,构建自己的镜像
- 了解 Docker 网络和数据卷,掌握容器间通信和数据持久化