当前位置: 首页 > news >正文

【Docker基础】Docker-compose常用命令实践(一):服务生命周期管理

目录

1 Docker-compose简介

1.1 核心概念

2 服务生命周期管理命令

2.1 启动服务(up命令)

2.2 基本用法

2.3 常用选项

2.4 启动执行流程

2.5 实际案例示例

3 停止与删除服务(down命令)

3.1 基本用法

3.2 常用选项

3.3 执行流程

3.4 实际案例示例

4 重启服务(restart命令)

4.1 基本用法

4.2 常用选项

4.3 执行流程

4.4 实际案例示例

5 命令对比

5.1 up vs start

5.2 down vs stop

6 常见问题解答

7 总结


在现代应用开发和部,Docker已经成为不可或缺的工具,而Docker-compose作为Docker官方的多容器编排工具,极大地简化了多容器应用的管理工作。本文将深入探讨Docker-compose在服务生命周期管理方面的常用命令,帮助开发者高效管理容器化应用。

1 Docker-compose简介

Docker-compose是一个用于定义和运行多容器Docker应用程序的工具。通过一个简单的YAML文件(通常命名为docker-compose.yml),开发者可以配置应用所需的所有服务,然后使用单个命令创建和启动所有服务。

1.1 核心概念

  • 服务(Service):在Compose文件中定义的一个容器,可以包含镜像、环境变量、挂载卷等配置
  • 项目(Project):由一组关联服务组成的完整应用,默认使用所在目录名作为项目名
  • Compose文件:YAML格式的配置文件,定义了服务、网络和卷等资源

2 服务生命周期管理命令

2.1 启动服务(up命令)

docker-compose up 是启动服务的核心命令,它会根据docker-compose.yml文件创建并启动所有定义的服务

2.2 基本用法

docker-compose up

2.3 常用选项

  • -d 或 --detach:在后台运行服务
  • --build:在启动容器前构建镜像
  • --force-recreate:强制重新创建容器,即使配置和镜像没有改变
  • --no-deps:不启动依赖的服务

2.4 启动执行流程

  • 首先解析docker-compose.yml文件
  • 检查所需镜像是否存在
  • 如果镜像不存在,先构建镜像
  • 根据是否使用-d选项决定在前台还是后台运行
  • 最终完成服务启动

2.5 实际案例示例

# 后台启动所有服务并强制重新构建镜像
docker-compose up -d --build# 只启动特定服务(如web服务)及其依赖
docker-compose up -d web

3 停止与删除服务(down命令)

docker-compose down 用于停止并删除由up命令创建的资源。

3.1 基本用法

docker-compose down

3.2 常用选项

  • -v 或 --volumes:删除Compose文件中定义的所有命名卷和匿名卷
  • --rmi:删除镜像,可选值:
    • all:删除所有服务使用的镜像
    • local:只删除没有自定义标签的镜像
  • --remove-orphans:删除未在Compose文件中定义的容器

3.3 执行流程

  • 首先停止所有运行中的容器
  • 根据是否使用-v选项决定是否删除关联的卷
  • 根据--rmi选项决定是否删除镜像
  • 删除创建的网络
  • 完成资源清理

3.4 实际案例示例

# 停止并删除所有容器、网络,但保留卷和镜像
docker-compose down# 彻底清理,包括删除卷和本地镜像
docker-compose down -v --rmi all# 删除未在Compose文件中定义的孤儿容器
docker-compose down --remove-orphans

4 重启服务(restart命令)

docker-compose restart 用于重启运行中的服务容器。

4.1 基本用法

# 重启所有服务
docker-compose restart# 重启特定服务
docker-compose restart service_name

4.2 常用选项

  • -t, --timeout:指定停止容器的超时时间(默认为10秒)

4.3 执行流程

  • 判断是否指定了特定服务
  • 向容器发送SIGTERM信号尝试优雅停止
  • 如果在超时时间内停止成功,则重新启动容器
  • 如果超时仍未停止,则发送SIGKILL强制停止后再启动
  • 完成重启过程

4.4 实际案例示例

# 重启所有服务,设置超时为20秒
docker-compose restart -t 20# 只重启web服务
docker-compose restart web

5 命令对比

5.1 up vs start

  • up:创建并启动容器(如果容器不存在)
  • start:只启动已存在但停止的容器

5.2 down vs stop

  • stop:只停止容器,不删除资源
  • down:停止并删除容器、网络等资源

6 常见问题解答

Q1: up命令的--build和--no-build有什么区别?
  • --build强制在启动前构建镜像,即使镜像已存在
  • --no-build则禁止构建,直接使用现有镜像。默认行为是如果镜像不存在则构建
Q2: down命令删除卷会有什么影响?
  • 删除卷会清除其中的所有数据,包括数据库数据等持久化内容
  • 生产环境应谨慎使用-v选项,或确保有备份
Q3: restart和stop+start有什么区别?
  • 功能上相似,但restart是一个原子操作,且可以统一设置超时时间
  • 对于多服务的情况,restart能更好地保持服务间的协调

7 总结

本文介绍了Docker-compose在服务生命周期管理中的三个核心命令:
  • up
  • down
  • restart
通过理解这些命令的工作原理和选项,开发者可以更高效地管理容器化应用。记住:
  • 使用up -d --build在开发时快速启动服务
  • 使用down -v在测试后彻底清理环境
  • 使用restart在不改变配置的情况下重新加载服务
http://www.dtcms.com/a/288915.html

相关文章:

  • LVS技术详解与实战
  • Python dataclass 高阶用法与技巧
  • QML 图形效果详解
  • 深入解析Ext2文件系统架构
  • AI 量化工具汇总
  • C语言:二维数组
  • 【自动驾驶黑科技】基于Frenet坐标系的车道变换轨迹规划系统实现(附完整代码)
  • OneCode+CloudWeGo 深化实践:智能发货单的 LLM 逻辑推理引擎优化
  • 30天打牢数模基础-层次聚类讲解
  • Ubuntu高频实用命令大全
  • [自用】JavaSE--集合框架(二)--Map集合体系
  • nvm、npm、pnpm、cnpm、yarn
  • `MYSQL`、`MYSQL_RES` 和 `MYSQL_FIELD`的含义与使用案例
  • RCE随笔(1)
  • Node.js worker_threads 性能提升
  • VUE2 学习笔记2 数据绑定、数据代理、MVVM
  • 习题4.4 给出4个湖从大到小的顺序
  • 交通出行大前端与 AI 融合:智能导航与出行预测
  • 详解Mysql Order by排序底层原理
  • 黑马教程Webday6
  • 【Docker基础】Docker-compose常用命令实践(二):状态与日志查看
  • kafka生产端和消费端的僵尸实例以及解决办法
  • Vue开发前端报错:‘vue-cli-service‘ 不是内部或外部命令解决方案
  • 【Java学习|黑马笔记|Day18】Stream流|获取、中间方法、终结方法、收集方法
  • 【Linux】2. Linux下的C/C++开发环境
  • 【UE5医学影像可视化】读取dicom数据生成2D纹理并显示
  • pytest-log
  • 嵌入式Linux:获取线程ID
  • 数组算法之【合并两个有序数组】
  • 137. Java 泛型 - 泛型与通配符:子类型化关系