Docker Desktop 安装与使用
Docker 是容器化平台,用于隔离运行环境和统一服务启动方式。
这页只记录 Windows + WSL 环境里的 Docker Desktop 安装、配置和常用操作。
什么时候该用 Docker Desktop
下面几类场景,Docker 往往能明显减少环境问题:
- 项目依赖 PostgreSQL、Redis、Nginx 等服务
- 团队多人协作,需要统一版本与启动方式
- 你需要一键起多服务,或者要频繁切换项目环境
- 要把本地运行环境尽量靠近线上
但如果只是写一个纯前端 demo 或单文件脚本,直接本地跑通常更轻、更快。
前置条件
确保已启用 WSL 2:
wsl --install
安装
winget install Docker.DockerDesktop
安装后重启电脑,Docker Desktop 会自动启动。
验证:
docker --version
docker compose version
Docker Desktop + WSL 2 推荐配置
Docker 官方在 Windows 上推荐使用 WSL 2 后端,这通常比传统 Hyper-V 工作流更省资源,也更适合前端与后端本地开发。
建议按这个顺序检查:
- 先确认
wsl --version输出正常,并已安装至少一个 Linux 发行版 - 在 Docker Desktop 的设置中启用 Use the WSL 2 based engine
- 在 Resources → WSL Integration 里打开你常用发行版的集成开关
- 进入 WSL 终端,直接运行
docker version和docker compose version验证
建议把活跃项目放在 WSL 的 Linux 文件系统中,例如 ~/projects/app,这样文件监听、依赖安装、容器挂载的性能更稳定。
如果你主要在 WSL 中开发,可以把 Docker 当成“Windows 安装、Linux 使用”的模式:Docker Desktop 负责后台引擎,终端、编辑器和代码都放在 WSL 里。
推荐上手路线
如果你是第一次系统使用 Docker,建议按下面顺序来:
- 先确认引擎能启动,
docker version输出正常 - 用
docker run hello-world验证最小工作流 - 再学会拉镜像、看日志、进容器、删容器
- 然后转向
docker compose管理多服务 - 最后再补 Dockerfile、镜像优化、部署与编排
镜像管理
docker pull nginx # 拉取镜像
docker images # 查看本地镜像
docker rmi nginx # 删除镜像
docker image prune # 清理悬空镜像
docker system prune -a # 清理所有未使用资源
容器操作
docker run -d -p 8080:80 --name my-nginx nginx # 运行容器
docker ps # 查看运行中的容器
docker ps -a # 查看所有容器
docker stop my-nginx # 停止容器
docker start my-nginx # 启动容器
docker rm my-nginx # 删除容器
docker logs -f my-nginx # 查看日志(实时)
docker exec -it my-nginx sh # 进入容器
Docker Compose
# docker-compose.yml 示例
services:
web:
image: nginx
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
restart: unless-stopped
docker compose up -d # 启动服务
docker compose down # 停止并删除
docker compose logs -f # 查看日志
docker compose ps # 查看状态
docker compose pull # 更新镜像
项目目录建议
一个自托管或本地联调项目,目录建议尽量分清代码、配置、持久化数据:
project/
compose.yml
.env
app/
config/
data/
backups/
经验上:
data/放数据库、上传目录等持久化内容config/放 Nginx、应用配置等可版本化文件.env放端口、密码、域名等环境变量,但不要提交真实密钥- 升级服务前,先备份
data/和关键配置
进阶:Dockerfile
FROM node:22-alpine
WORKDIR /app
COPY package.json pnpm-lock.yaml ./
RUN corepack enable && pnpm install --frozen-lockfile
COPY . .
RUN pnpm build
EXPOSE 3000
CMD ["node", ".output/server/index.mjs"]
docker build -t my-app .
docker run -d -p 3000:3000 my-app
配置镜像加速
Docker Desktop 设置 → Docker Engine:
{
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
Docker MCP Toolkit
较新的 Docker Desktop 提供了 Docker MCP Toolkit,可以把一些 MCP Server 与 Gateway 通过 Docker 方式统一管理。它很适合下面几类场景:
- 不想在本机直接安装一堆 Node.js / Python 依赖
- 团队希望共享同一套 MCP 工具环境
- 想把工具能力隔离在容器里,降低宿主机污染
启用相关功能后,可以先用下面的命令查看当前环境支持的 MCP 子命令:
docker mcp --help
docker mcp server ls
docker mcp tools list
docker mcp gateway run
如果你的 AI 客户端支持通过外部命令启动 MCP Server,也可以直接让它调用容器:
{
"my-mcp-server": {
"command": "docker",
"args": ["run", "--rm", "-i", "ghcr.io/acme/my-mcp-server:latest"]
}
}
这样做的好处是:客户端不需要关心宿主机上是否安装了 Python、Node.js、SQLite 或其他依赖,容器镜像本身就封装了运行环境。
更多 MCP 基础概念、客户端配置位置和常见服务器示例,可继续看 MCP 模型上下文协议。
常见问题
Docker Desktop 启动后命令不可用
- 先确认系统托盘里的 Docker Desktop 已完全启动
- 再重新开一个终端执行
docker version - 如果只是在 WSL 内不可用,检查对应发行版的 WSL Integration 是否已开启
容器能起,但文件监听很慢
这通常是代码放在 Windows 文件系统里,再从 WSL 或容器挂载导致的。更稳妥的做法是把活跃项目放进 WSL 的 Linux 文件系统中。
端口冲突
如果 3000、5432、6379 已被占用,先用:
docker ps
ss -tlnp
确认是宿主机服务冲突还是已有容器冲突,再决定换端口还是停掉旧服务。
清理空间时误删数据
docker system prune -a 很好用,但它会清掉未使用资源。执行前先区分:
- 镜像能不能重新拉
- 卷里是不是有数据库或上传数据
- 当前项目是不是还依赖某些 stopped 容器保留状态
延伸阅读
参考链接
- Docker 官网 — 产品与文档
- Docker Hub — 镜像仓库
- Docker Desktop — 下载
- Docker Desktop WSL 2 后端文档 — 官方配置说明
- Docker MCP Toolkit — Docker 对 MCP 的支持
- Docker GitHub — 源码(Moby)
- Docker Compose 文档 — 官方指南
- Dockerfile 参考 — 语法说明