【Docker】Compose
Docker Compose 是 Docker 官方提供的容器编排工具,用于通过一个配置文件(
docker-compose.yml)定义和管理多个关联的 Docker 容器,实现多容器应用的一键启动、停止、构建和管理。(dockerfile是构建镜像,docker-compose.yml管理多个容器的运行)
流程
- 编写配置文件:创建
docker-compose.yml,定义所有服务(容器)的配置。 - 启动应用:执行
docker-compose up一键启动所有容器。 - 管理应用:通过
docker-compose stop(停止)、docker-compose down(停止并删除)等命令管理。
docker-compose.yml 配置文件
配置文件是 Compose 的核心,采用 YAML 格式,示例:
services: # 1. 服务定义(核心,每个服务对应一个容器)service1: # 服务名(自定义,如 frontend/backend)image: xxx # 镜像来源(或 build 构建)ports: [] # 端口映射volumes: [] # 数据挂载depends_on: [] # 依赖的其他服务environment: {} # 环境变量networks: [] # 所属网络
networks: {} # 2. 自定义网络(可选)
volumes: {} # 3. 自定义数据卷(可选)
一、启动容器(基于 docker-compose.yml)
前台启动(默认,输出实时日志,按 Ctrl+C 停止)
docker compose up
- 首次启动会自动构建镜像(若配置 build)、创建网络 / 卷、启动所有服务。
- 再次执行会重启已停止的容器,保留数据。
后台启动(推荐,启动后释放终端)
docker compose up -d
-d 表示 detach(分离模式),容器在后台运行。
二、关闭容器
停止容器(保留容器和数据)
docker compose down
- 停止并删除所有服务的容器(但保留镜像、数据卷、网络)。
- 下次启动(
up)可复用数据。
停止容器并清理资源
# 停止并删除容器、网络,同时删除未被其他服务引用的数据卷
docker compose down -v
# 停止并删除容器、网络、数据卷,同时删除构建的镜像
docker compose down -v --rmi all
-
-v:删除关联的数据卷(谨慎使用,会丢失持久化数据)。 -
--rmi all:删除通过build构建的镜像(不影响拉取的镜像如nginx、mongo)。
三、其他常用命令
-
重启容器(不重新构建,适合配置未变更时)
docker compose restart -
查看运行状态
docker compose ps -
查看日志(后台启动时查看输出)
# 查看所有服务日志
docker compose logs# 查看指定服务日志(如 frontend),并实时跟踪
docker compose logs -f frontend