Docker Desktop 怎么用?安装配置和常见问题
Docker Desktop 是在 Mac 和 Windows 上用 Docker 最省事的方式——装一个应用就拥有完整的 Docker 环境,不需要折腾虚拟机或 Linux 双系统。但它不只是个安装包,里面的 WSL2 集成、Kubernetes 支持、资源管理有些门道值得了解。
Docker Desktop 里装了什么
Docker Desktop 不是 Docker Engine 的 GUI 包装——它是一个完整的开发环境:
| 组件 | 作用 |
|---|---|
| Docker Engine | 容器运行时 |
| Docker CLI | 命令行工具 |
| Docker Compose | 多容器编排 |
| Docker BuildKit | 高性能构建引擎 |
| Kubernetes (可选) | 单节点 K8s 集群 |
| Docker Scout | 镜像漏洞扫描 |
| Docker Extensions | 扩展市场 |
Mac 上 Docker Desktop 通过一个轻量级 Linux 虚拟机运行 Docker Engine(因为 Docker 本质上需要 Linux 内核)。Windows 上通过 WSL2 运行。
安装后的关键配置
资源分配
默认配置经常不够用——4GB 内存跑不了几个容器:
shellSettings → Resources CPUs: 4-6(建议宿主机的 50%) Memory: 8-12GB(建议宿主机的 50%) Swap: 2GB Disk image size: 60GB+
调完后 Docker Desktop 会重启虚拟机。分配太多会导致宿主机卡顿,太少容器 OOM。建议 CPU 和内存各分一半给 Docker。
WSL2 集成(Windows)
Docker Desktop 在 Windows 上跑在 WSL2 里。开启后可以在 WSL2 的 Linux 发行版中直接使用 docker 命令:
shellSettings → Resources → WSL Integration ✅ Enable integration with my default WSL distro ✅ Ubuntu (或其他发行版)
这样在 Windows Terminal 的 Ubuntu 标签页里直接 docker run,不需要额外安装 Docker。
文件共享性能
Mac 上 Docker 挂载目录特别慢——因为文件要在 macOS 和 Linux 虚拟机之间同步。VirtioFS 是 Docker Desktop 4.x 以后的新方案,比之前的 gRPC FUSE 快很多:
shellSettings → General ✅ Choose file sharing implementation for your containers: VirtioFS
另外 node_modules 这种大量小文件的目录不要挂载——用匿名 volume 代替:
yamlservices: app: volumes: - .:/app # 代码目录挂载 - /app/node_modules # node_modules 用容器内的,不走文件共享
日常使用的核心功能
镜像管理
shellDocker Desktop → Images
可以搜索、拉取、删除镜像,查看镜像层信息。比命令行更直观——特别是看哪个镜像占了多少磁盘。
容器管理
shellDocker Desktop → Containers
启动、停止、删除容器,查看日志,进入容器终端。小技巧:点击容器的端口号可以直接在浏览器打开。
Volume 管理
shellDocker Desktop → Volumes
查看所有 Docker Volume 占用的磁盘空间。容器删了 Volume 不会自动删——时间久了会积累大量废弃数据。定期清理:
bashdocker volume prune # 删除所有未被容器引用的 volume
构建缓存清理
bashdocker builder prune # 清理构建缓存 docker system prune -a # 一键清理所有未使用的资源(镜像、容器、网络、缓存)
Docker Desktop 的 Troubleshoot 页面也有 "Clean / Purge data" 按钮——重置整个 Docker 环境。
Kubernetes 支持
Docker Desktop 内置了单节点 Kubernetes 集群,一键开启:
shellSettings → Kubernetes ✅ Enable Kubernetes
开启后 kubectl 直接可用:
bashkubectl get nodes # NAME STATUS ROLES AGE VERSION # docker-desktop Ready control-plane 1m v1.28.0
适合本地开发测试 K8s manifest,不需要装 minikube 或 kind。
注意:开启 K8s 会额外占用 2-3GB 内存。不用时建议关掉。
Docker Extensions
Docker Desktop 支持扩展,常用的几个:
| 扩展 | 功能 |
|---|---|
| Disk Usage | 可视化磁盘占用分析 |
| Trivy | 镜像安全扫描 |
| DDEV | 本地开发环境管理 |
| Tilt | 实时开发工作流 |
安装方式:Extensions → Browse → Install
Docker Desktop 的替代方案
Docker Desktop 对个人免费,但大企业(250+ 员工或 1000 万+ 美元年收入)需要付费订阅。如果不想付费:
| 替代方案 | 平台 | 说明 |
|---|---|---|
| OrbStack | Mac | 比 Docker Desktop 快 3-5 倍启动,内存占用少 |
| Rancher Desktop | Mac/Win/Linux | 开源免费,支持 containerd 和 dockerd |
| Colima | Mac | 命令行工具,轻量,基于 Lima |
| Podman Desktop | Mac/Win/Linux | Red Hat 出品,无守护进程 |
推荐:Mac 用户优先试 OrbStack——启动快、内存省、文件共享性能好,个人免费。
常见问题
Docker Desktop 启动慢
Mac 上首次启动需要 30-60 秒。加快方法:不要关 Docker Desktop,用 docker stop 停容器即可。Docker Desktop 自身在后台几乎不占 CPU。
磁盘空间持续增长
Docker 的虚拟磁盘(Docker.raw / data.vhdx)只会增大不会自动缩小。即使删了镜像,虚拟磁盘文件也不会缩小。解决:
bash# Mac:压缩虚拟磁盘 docker system prune -a # 然后重启 Docker Desktop → Troubleshoot → Clean / Purge data
容器网络访问宿主机服务
容器里访问宿主机(比如宿主机上的数据库):
bash# 从容器内访问宿主机 curl http://host.docker.internal:5432
host.docker.internal 是 Docker Desktop 提供的特殊 DNS 名,自动解析为宿主机 IP。