文章目录
- [Docker 和 docker‑compose 的核心区别 + 为什么要单独装 compose](#Docker 和 docker‑compose 的核心区别 + 为什么要单独装 compose)
-
- [1. Docker 是什么](#1. Docker 是什么)
- [2. docker‑compose 是什么](#2. docker‑compose 是什么)
- [3. 两个版本说明(很容易搞混)](#3. 两个版本说明(很容易搞混))
- [4. 通俗对比表](#4. 通俗对比表)
- [5. 举个直观例子](#5. 举个直观例子)
- [6. 常见疑问:为什么不打包在一起?](#6. 常见疑问:为什么不打包在一起?)
- [7. 快速区分两条命令](#7. 快速区分两条命令)
Docker 和 docker‑compose 的核心区别 + 为什么要单独装 compose
先一句话总结:
Docker 是容器引擎(真正跑容器的程序);docker‑compose 是一个编排工具,用来一次性管理多个容器。两者不是同一个东西,所以装完 Docker 还要额外装 Compose。
1. Docker 是什么
Docker = 容器运行时
职责:
- 拉镜像
docker pull - 启动单个容器
docker run - 停止、删除、查看单个容器
只能手动一个一个启动容器
举个例子:
一个项目需要:数据库 + 后端服务 + Redis
只用 Docker 你要敲 3 条长长的 docker run 命令,还要手动配置网络、端口、依赖顺序。一旦重启,命令全部重写,非常麻烦。
2. docker‑compose 是什么
Compose = 批量管理容器的脚本工具
- 用一个 yaml 文件(
docker-compose.yml)把所有服务写在一起 - 一条命令
docker-compose up -d同时启动全部容器,自动创建网络、依赖关系 - 一条命令关闭、重启整个项目
简单理解:
Docker 是发动机;docker‑compose 是方向盘和控制面板。发动机装好,不等于自带控制面板。
3. 两个版本说明(很容易搞混)
- 旧版:独立程序 docker‑compose(V1)
- 是单独的二进制文件,和 Docker 分开安装
- 命令:
docker‑compose up(中间带短横线)
- 新版:Docker Compose Plugin(V2)
- 作为 Docker 的插件集成进 docker 本身
- 命令:
docker compose up(空格,没有短横线)
很多纯净版 docker(docker-ce)默认不带 compose 插件,所以装好 docker 之后,还要单独下载安装 compose。
4. 通俗对比表
| 工具 | 作用 | 使用场景 |
|---|---|---|
| docker | 跑单个容器 | 简单单服务,手动命令管理 |
| docker‑compose | 批量编排多个容器 | 开发环境、本地部署多服务项目 |
5. 举个直观例子
只用 docker(三条命令)
bash
docker run mysql ...
docker run redis ...
docker run webserver ...
用 docker‑compose(一条命令)
bash
docker-compose up -d
6. 常见疑问:为什么不打包在一起?
- Docker 引擎本身定位只是容器运行时,保持轻量化;
- Compose 面向本地开发、单机多容器场景,属于附加工具;
- 生产集群一般不用 Compose,用 Kubernetes,所以官方默认不强制捆绑安装。
7. 快速区分两条命令
bash
# V1 独立安装版(单独装的包)
docker‑compose up
# V2 插件版(docker内置插件)
docker compose up