本地开发如果涉及多个服务联动,优先用 Docker Compose 管理;如果是单次临时容器或简单脚本,直接 docker 命令更干脆。
先说结论:多服务编排选 Compose,单容器临时任务选 CLI,别为了用工具而用工具。
- 适合:本地需要同时启动数据库、缓存和应用服务的场景
- 重点看:yaml 文件维护成本和团队成员的上手难度
- 别忽略:一次性测试或调试时,直接敲命令反而更快
命令速用版
直接启动单个 nginx 容器:
docker run -d `--name` my-nginx -p 8080:80 nginx使用 Compose 启动定义好的服务栈:
docker-compose up -d为什么会这样
Docker 命令是“指令式”的,你需要告诉它每一步做什么,适合临时任务。Docker Compose 是“声明式”的,你在 yaml 文件里写好期望状态,适合固定环境的重复启动。公开资料中没有看到可靠的量化数据证明哪种方式运行速度更快,因为容器运行时性能主要取决于镜像和宿主机,差异主要体现在人的操作效率上。
分步处理
1. 评估服务数量:如果只有一个容器,且不需要复杂网络,直接用 docker run。
2. 编写配置文件:如果超过两个服务,新建 docker-compose.yml,定义 service、ports 和 volumes。
3. 启动与停止:Compose 使用 up -d 启动,down 停止;CLI 需要分别管理每个容器的 stop 和 rm。
怎么验证是否生效
CLI 方式检查:
docker ps | grep my-nginxCompose 方式检查:
docker-compose ps确认状态为 Up 且端口映射正确。
常见坑
1. 路径问题:Compose 中 volumes 路径相对配置文件,CLI 中相对当前目录,混用容易挂载失败。
2. 网络隔离:Compose 默认创建独立网络,CLI 启动的容器默认在 bridge 网络,互通需要额外配置。
3. 版本兼容:docker-compose 命令在新版 Docker 中已整合为 docker compose(无连字符),注意脚本兼容性。