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 --versiondocker 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 --versiondocker compose versiondocker run hello-world
镜像加速 国内用户建议配置镜像加速器
开机自启 建议开启,避免忘记启动 Docker

下一步

安装完成后,你可以:

  1. 编写 docker-compose.yml 文件,用 Compose 编排多容器应用
  2. 学习 Dockerfile 编写,构建自己的镜像
  3. 了解 Docker 网络和数据卷,掌握容器间通信和数据持久化
相关推荐
qetfw3 小时前
CentOS 7 搭建 LDAP 目录服务
linux·运维·centos
ALINX技术博客3 小时前
【黑金云课堂】FPGA技术教程Linux开发:系统进阶-PS DMA
linux·fpga开发
IT方大同4 小时前
linux简介
linux·运维·服务器
mounter6254 小时前
从内存隔离到运行时防线:透视 Linux 内核安全强化的博弈与演进
linux·网络·安全·linux kernel·kernel
微道道5 小时前
Linux盒子局域网内使用 .local 域名访问,告别IP变化烦恼
linux·运维·服务器·hermes
copyer_xyf6 小时前
Docker 入门与实战:容器化 React + NestJS 项目
docker
Bug退散师6 小时前
多路IO复用[select版TCP服务器与poll版TCP服务器]与常用网络编程函数详解
linux·服务器·c语言·网络·驱动开发·tcp/ip
xiaoye-duck6 小时前
《Linux系统编程》Linux 系统多线程(一):线程概念(从虚拟地址空间与分页机制到优缺点解析)
linux·线程
国服第二切图仔7 小时前
05-构建与特性开关
linux·服务器·ubuntu