6月5日 22:29

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 内存跑不了几个容器:

shell
Settings → 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 命令:

shell
Settings → 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 快很多:

shell
Settings → General ✅ Choose file sharing implementation for your containers: VirtioFS

另外 node_modules 这种大量小文件的目录不要挂载——用匿名 volume 代替:

yaml
services: app: volumes: - .:/app # 代码目录挂载 - /app/node_modules # node_modules 用容器内的,不走文件共享

日常使用的核心功能

镜像管理

shell
Docker Desktop → Images

可以搜索、拉取、删除镜像,查看镜像层信息。比命令行更直观——特别是看哪个镜像占了多少磁盘。

容器管理

shell
Docker Desktop → Containers

启动、停止、删除容器,查看日志,进入容器终端。小技巧:点击容器的端口号可以直接在浏览器打开。

Volume 管理

shell
Docker Desktop → Volumes

查看所有 Docker Volume 占用的磁盘空间。容器删了 Volume 不会自动删——时间久了会积累大量废弃数据。定期清理:

bash
docker volume prune # 删除所有未被容器引用的 volume

构建缓存清理

bash
docker builder prune # 清理构建缓存 docker system prune -a # 一键清理所有未使用的资源(镜像、容器、网络、缓存)

Docker Desktop 的 Troubleshoot 页面也有 "Clean / Purge data" 按钮——重置整个 Docker 环境。

Kubernetes 支持

Docker Desktop 内置了单节点 Kubernetes 集群,一键开启:

shell
Settings → Kubernetes ✅ Enable Kubernetes

开启后 kubectl 直接可用:

bash
kubectl 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 万+ 美元年收入)需要付费订阅。如果不想付费:

替代方案平台说明
OrbStackMac比 Docker Desktop 快 3-5 倍启动,内存占用少
Rancher DesktopMac/Win/Linux开源免费,支持 containerd 和 dockerd
ColimaMac命令行工具,轻量,基于 Lima
Podman DesktopMac/Win/LinuxRed 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。

标签:Docker