Docker 安装配置完全指南:MacOS 、Windows、Linux环境下的安装、配置与验证

Docker 安装配置完全指南:macOS 、win、linux环境下的安装、配置与验证

TL;DR:在 macOS 上通过 Docker Desktop 一键安装 Docker 引擎和 Docker Compose,并用 3 条命令完成验证。

目录

文章目录

一、为什么需要 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 未启动,或守护进程异常退出。

解决方案:

  1. 检查菜单栏是否有鲸鱼图标,没有则启动 Docker Desktop
  2. 等待鲸鱼图标停止动画(表示引擎启动完成)
  3. 如果已启动但仍报错,尝试重启 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 网络不稳定。

解决方案:

  1. 配置镜像加速器(参见第六节)
  2. 如果加速器也不可用,使用代理:
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)

这条命令会:

  1. 下载轩辕镜像的安装脚本
  2. 自动检测系统版本(CentOS/Ubuntu/Debian)
  3. 配置 Docker 官方源或国内镜像源
  4. 安装 Docker Engine 和 Docker Compose
  5. 启动 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

下一步

安装完成后,你可以:

  1. 编写 docker-compose.yml 文件,用 Compose 编排多容器应用
  2. 学习 Dockerfile 编写,构建自己的镜像
  3. 了解 Docker 网络和数据卷,掌握容器间通信和数据持久化
相关推荐
向阳是我15 小时前
Mac 命令行获取 APK 公钥和证书 MD5 指纹
macos
夜雪一千15 小时前
Linux 管道、重定向命令介绍
linux·运维·chrome
江华森15 小时前
数据中心网络技术基础 —— 从原理到实操
linux·运维
牛马工作号15 小时前
Copyparty 轻量文件共享:Docker Compose 部署、权限与多协议使用全指南
运维·docker·容器
骑着蜗牛撵大象32715 小时前
手写一个 HTTP 服务器:从 socket 到 epoll,Linux 上到底怎么把请求变成响应
linux·服务器·网络·http·epoll·socket编程·并发模型
程序员初一16 小时前
我在 1C1G 的服务器上装了个桌面环境,然后用 VNC 连它,然后我后悔了
linux·ssh
星恒随风16 小时前
Linux Socket TCP编程(二):逐文件重构多进程、多线程与线程池服务器,深入fork、pthread_create、popen和std::bind
linux·服务器·笔记·学习·tcp/ip
晚风叙码16 小时前
Linux 进程概念(下):程序地址空间与虚拟内存
linux·服务器·算法
无足鸟ICT16 小时前
【RHCA+】影响Linux系统性能的因素
linux·运维·服务器
沫璃染墨16 小时前
从零入门计算机网络系列(十):HTTP协议进阶——从资源路径解析到状态码与请求头详解
linux·运维·服务器·网络·c++·http