docker compose如何管理docker服务

一、Docker Compose 管理服务的核心方式

Docker Compose 遵循 "一个配置文件,一套命令" 的核心思想,主要通过以下步骤和命令来管理服务:

1. 核心配置文件:docker-compose.yml

这是定义所有服务的核心,它描述了服务的镜像、端口映射、数据卷、网络、依赖关系、环境变量等。示例配置文件(以 Web + 数据库为例):

yaml

复制代码
version: '3.8'  # Compose 文件版本(需与 Docker 版本匹配)

# 定义要管理的服务
services:
  # 第一个服务:web 应用
  web:
    image: nginx:alpine  # 使用的镜像
    ports:
      - "8080:80"  # 端口映射(主机:容器)
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf  # 挂载配置文件
    depends_on:
      - db  # 依赖 db 服务,启动时先启动 db
    restart: always  # 容器退出时自动重启
    networks:
      - app-network  # 加入自定义网络

  # 第二个服务:数据库
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: 123456  # 环境变量(数据库密码)
      MYSQL_DATABASE: mydb
    volumes:
      - db-data:/var/lib/mysql  # 持久化数据卷
    networks:
      - app-network

# 定义数据卷(持久化数据)
volumes:
  db-data:

# 定义自定义网络(隔离服务)
networks:
  app-network:
    driver: bridge
2. 核心命令:管理服务的生命周期

所有命令都在 docker-compose.yml 所在目录执行,核心命令如下:

命令 作用 示例
docker-compose up 启动所有服务(前台运行) docker-compose up(前台)docker-compose up -d(后台运行,推荐)
docker-compose down 停止并删除容器、网络(保留数据卷) docker-compose down(仅停容器)docker-compose down -v(删除数据卷)
docker-compose start 启动已创建的服务容器 docker-compose start web(仅启动 web 服务)
docker-compose stop 停止服务容器(不删除) docker-compose stop db(仅停止 db 服务)
docker-compose restart 重启服务 docker-compose restart web
docker-compose ps 查看服务状态 docker-compose ps(列出所有服务容器)
docker-compose logs 查看服务日志 docker-compose logs -f web(实时查看 web 日志)
docker-compose scale 扩缩容服务(旧版) docker-compose scale web=3(启动 3 个 web 容器)
docker-compose up --scale 扩缩容服务(新版) docker-compose up -d --scale web=3
3. 关键管理能力详解
  • 依赖管理 :通过 depends_on 定义服务启动顺序(如先启动数据库,再启动 web),确保服务依赖的组件先就绪。
  • 资源隔离 :通过自定义 networks 让服务仅在指定网络内通信(避免与主机其他容器冲突),通过 volumes 持久化数据(容器删除后数据不丢失)。
  • 环境配置 :通过 environment.env 文件注入环境变量,实现配置与代码分离(如数据库密码不硬编码)。
  • 自动重启 :通过 restart: always 配置,服务容器异常退出时自动重启,保证服务可用性。
  • 日志聚合 :通过 docker-compose logs 统一查看所有服务的日志,无需逐个容器查看。

二、实操示例:完整的服务管理流程

  1. 编写配置文件 :创建 docker-compose.yml(如上述 Web + MySQL 示例)。

  2. 启动服务

    bash

    运行

    复制代码
    docker-compose up -d  # 后台启动所有服务
  3. 查看状态

    bash

    运行

    复制代码
    docker-compose ps  # 查看服务是否正常运行
  4. 查看日志

    bash

    运行

    复制代码
    docker-compose logs -f web  # 实时查看 web 服务日志
  5. 扩缩容

    bash

    运行

    复制代码
    docker-compose up -d --scale web=2  # 启动 2 个 web 容器
  6. 停止服务

    bash

    运行

    复制代码
    docker-compose stop  # 停止所有服务(容器保留)
  7. 清理资源

    bash

    运行

    复制代码
    docker-compose down -v  # 停止并删除容器、网络、数据卷(谨慎使用)

Docker Compose 主要分为两个大版本,命令形式和安装 / 运行方式有明显区别:

版本 命令形式 核心特征
Compose V1 docker-compose up 基于 Python 开发的独立工具,需要单独安装(如 pip install docker-compose
Compose V2 docker compose up 集成到 Docker CLI 中的子命令(Go 语言重构),随 Docker Desktop 或 Docker Engine 一起分发

总结

  1. Docker Compose 通过 docker-compose.yml 统一定义多服务的配置(镜像、端口、依赖、网络等),替代手动逐个创建容器的繁琐操作。
  2. 核心命令(up/down/start/stop/logs)实现服务全生命周期管理,支持启动、停止、重启、扩缩容、日志查看等核心操作。
  3. 关键能力(依赖管理、资源隔离、自动重启)确保多容器应用的稳定性和可维护性,是单机多容器应用的首选管理工具。
相关推荐
叽里咕噜怪3 分钟前
Pod的详解与进阶
运维·容器·kubernetes
ONLYOFFICE11 分钟前
入门指南:远程运行 ONLYOFFICE 协作空间 MCP 服务器
运维·服务器·github·onlyoffice
行初心14 分钟前
uos基础 autostart 设置程序开机自启动
运维
Dovis(誓平步青云)18 分钟前
《Linux 核心 IO 模型深析(中篇):探索Cmake与多路转接的高效实现poll》
linux·运维·服务器·数据库·csdn成长记录
韦东东22 分钟前
行业资讯日报自动化:从采集到 LLM 生成的全链路拆解(以政务网站为例)
运维·人工智能·自动化·大模型·llm·政务·行业资讯
tianyuanwo23 分钟前
TERM变量迷思:从Jenkins节点连接差异看终端仿真与构建系统的微妙关系
运维·ssh·jenkins·java web·term
一勺菠萝丶23 分钟前
Jenkins 打包显示 SUCCESS 但产物不全?日志出现 Killed 的排查与解决(小白版)
运维·jenkins
腥臭腐朽的日子熠熠生辉25 分钟前
nest js docker 化全流程
开发语言·javascript·docker
tyatyatya26 分钟前
Ansible自动化配置,从入门到实战
运维·自动化·ansible
酒醉的胡铁26 分钟前
Docker Desktop 数据迁移完整流程(Windows 10/11 x64)
windows·docker·容器