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

Docker Compose编排

什么是 Docker Compose?

Docker Compose 是 Docker 官方推出的开源项目,用于快速编排和管理多个 Docker 容器的应用程序。它允许用户通过一个 YAML 格式的配置文件 docker-compose.yml 来定义和运行多个相关联的应用容器,从而实现对容器的统一管理和编排。

Docker Compose 的核心概念

  1. 项目(Project) :由一组关联的应用容器组成的一个完整业务单元。项目在 docker-compose.yml 文件中定义。
  2. 服务(Service) :一个应用的容器,可以包括若干运行相同镜像的容器实例。每个服务可以看作是项目中的一个独立组件。
  3. 容器(Container) :实际运行的服务实例。

主要功能

  • 容器编排:通过 docker-compose.yml 文件定义容器之间的依赖关系、网络连接、卷等配置,从而实现容器的自动化启动和管理。
  • 生命周期管理:支持启动、停止、重建服务,查看服务状态,流式传输日志输出,以及在服务上运行一次性命令。
  • 多环境支持:适用于开发、测试、生产等多种环境。

docker-compose.yml文件结构与示例

   docker-compose.yml文件中:顶级元素有六类:

  • name工程名
  • services服务定义
  • networks网络定义
  • volumes卷定义
  • configs配置
  • secrets敏感类配置

  关于docker-compose.yml文件的具体说明请参阅官网:https://docs.docker.com/reference/compose-file/

   下面以编配一个mysql数据库和wordpress博客作为例,展示docker-compose.yml文件内容:

#定义COMPOSE的工程名。该工程名会赋值给环境变量COMPOSE_PROJECT_NAME
name: p_myblog#服务定义:下面分别定义名为mysql和wordpress的两个服务
#mysql应先于wordpress启动,所以wordpress依赖于mysql
services:mysql:container_name: cntr_mysqlimage: mysql:8.4.3ports:- "3306:3306"environment:- MYSQL_ROOT_PASSWORD=root123- MYSQL_USER=wordpress- MYSQL_PASSWORD=wp456- MYSQL_DATABASE=db_wordpressvolumes:- v-mysqldata:/var/lib/mysql- /app/mysqlconf:/etc/mysql/conf.drestart: alwaysnetworks:- net-for-blogwordpress:image: wordpressports:- "9898:80"environment:WORDPRESS_DB_HOST: cntr_mysqlWORDPRESS_DB_USER: wordpressWORDPRESS_DB_PASSWORD: wp456WORDPRESS_DB_NAME: db_wordpressvolumes:- v-wordpress:/var/www/htmlrestart: alwaysnetworks:- net-for-blogdepends_on:- mysql#卷定义:服务所需要的卷映射都需要在此定义(目录挂载无需在此定义)
volumes:v-mysqldata:v-wordpress:#网络定义:
networks:net-for-blog:

docker compose命令

  1、根据yaml创建容器,并运行容器

#选项-f指定yaml文件名, 选项-d指定容器为后台运行
docker compose -f docker-compose.yml up -d

执行结果如下截图,浏览器访问http://192.168.43.201:9898/ 可以打开WordPress博客页面。

注意:

1、对于网络和卷,是以“工程名_指定名”作为最后的名称。

2、在docker-compose.yml文件中,指定了mysql的容器名。但没有指定wordpress的容器名,因此它自动以“工程名-服务名-序号”生成了容器名。

2、修改yaml后,仅reCreate重新构建涉及变化的容器,并运行容器

 对docker-compose.yml文件中wordpress的端口暴露映射配置改为:2828:80

 然后执行以下命令(与上面完全一样)

#选项-f指定yaml文件名, 选项-d指定容器为后台运行
docker compose -f docker-compose.yml up -d

执行完成后,可以看到它聪明的识别出变化部分:服务mysql因没有变,所以没有重建也没有重启。只对涉及变化的wordpress进行了reCreate重建并重新启动。

3、查看由compose编配的容器(各种状态)

#只列出由compose编配的容器状态(非compose编排的容器不会展示)
docker compose ps -a

4、停止由compose编配的容器

#停止由compose编配的容器(非compose编排的容器不会停止)
docker compose -f docker-compose.yml stop

 5、启动由compose编配的容器

#启动由compose编配的容器(非compose编排的容器不会启动)
docker compose -f docker-compose.yml start

  6、停止并删除由compose编配的容器

#停止并删除由compose编配的容器
docker compose -f docker-compose.yml down

注意:

1、删除了容器、网络。

2、卷(以及挂载目录)没有被删除,在宿主机上依然存在。若下次通过up命令运行时,卷(以及挂载目录)已存在的数据仍可以继续使用。


http://www.mrgr.cn/news/82213.html

相关文章:

  • Cursor小试1.生成一个网页的接口请求工具
  • 微信小程序自定义表格样式
  • 智能手机租赁系统全新模式改变消费习惯与商家盈利路径
  • 如何验证imap是否生效
  • 浏览器书签智能分类
  • Swift Combine 学习(六):自定义 Publisher 和 Subscriber
  • spring boot通过文件配置yaml里面的属性
  • Spring实现Logback日志模板设置动态参数
  • 19712 数字接龙
  • TTL 传输中过期问题定位
  • FOC控制原理7-源码解析2-系统滴答定时器中断
  • 使用ebooklib制作符合epub3规范的epub文件
  • C++语言编程————C++数据类型
  • 解决virtualbox克隆ubuntu虚拟机之后IP重复的问题
  • java Redisson 实现限流每秒/分钟/小时限制N个
  • 【复刻】ESG表现对企业价值的影响机制研究(2009-2021年)
  • 一、VxLAN 简介
  • 旷视科技Java面试题及参考答案
  • NRF24L01模块通信实验
  • 日期时间选择(设置禁用状态)
  • linux系统安装搭建chrony(ntp)时间同步服务器
  • git使用指南-实践-搭建git私服
  • 数据仓库中的指标体系模型介绍
  • Frontend - 分页(针对 python / Django )
  • 用Python操作字节流中的Excel工作簿
  • SpringCloud源码分析-Ribbon与LoadBalancer