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.mzph.cn/pingmian/66311.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

你已经分清JAVA中JVM、JDK与JRE的作用和关系了吗?

你已经分清JAVA中JVM、JDK与JRE的作用和关系了吗? 一. JVM、JDK与JRE的关系二. JVM、JDK与JRE的作用2.1 什么是JVM?2.2 什么是JDK?2.3 什么是JRE? 前言 点个免费的赞和关注,有错误的地方请指出,看个人主页有…

上下游服务间解耦的技术与管理

一、解耦为何至关重要 在当今软件研发的复杂生态中,耦合问题如影随形,困扰着众多开发者与企业。当多个模块、系统或团队紧密交织,相互依赖程度不断攀升,仿佛一张错综复杂的网,牵一发而动全身。就拿电商系统来说&#…

RP2K:一个面向细粒度图像的大规模零售商品数据集

这是一种用于细粒度图像分类的新的大规模零售产品数据集。与以往专注于相对较少产品的数据集不同,我们收集了2000多种不同零售产品的35万张图像,这些图像直接在真实的零售商店的货架上拍摄。我们的数据集旨在推进零售对象识别的研究,该研究具…

【踩坑指南:2025年最新】如何在Linux(Ubuntu)启动第一个Scala Hello World程序(Scala3)

如何正确地写出Scala的第一个程序,并且利用Scala3的简洁特性? 在解释器中直接输出Hello world非常简单,只需要直接执行即可: scala> println("Hello World") Hello World 但如果我们希望编写一个脚本文件&#xf…

Spark大数据处理引擎详解

一、概念 Spark是一种快速、通用、可扩展的大数据分析引擎,它基于内存计算的大数据并行计算框架,能够显著提高大数据环境下数据处理的实时性,同时保证高容错性和高可伸缩性。Spark于2009年诞生于加州大学伯克利分校AMPLab,2010年…

服务器数据恢复—离线盘数超过热备盘数导致raidz阵列崩溃的数据恢复

服务器数据恢复环境&故障: 一台配有32块硬盘的服务器在运行过程中突然崩溃不可用。经过初步检测,基本上确定服务器硬件不存在物理故障。管理员重启服务器后问题依旧。需要恢复该服务器中的数据。 服务器数据恢复环境: 1、将服务器中硬盘…

JVM之Java内存模型

Java内存模型(Java Memory Model,简称JMM)是Java虚拟机(JVM)规范中定义的一套规则,用于描述多线程环境下变量如何被访问和同步。在多线程编程中,内存模型的重要性不言而喻,它直接关系…

用 HTML5 Canvas 和 JavaScript 实现炫酷跨年烟花特效

一、引言 跨年夜,五彩斑斓、绚丽绽放的烟花是最令人期待的视觉盛宴之一。在网页端,我们能否通过技术手段复现这一梦幻场景呢?答案是肯定的。本文将深入剖析一段使用 HTML5 Canvas 和 JavaScript 实现的跨年烟花特效源码,带你领略前端技术创造的惊艳画面。 用 HTML5 Canvas…

安装教程:慧集通集成平台(DataLinkX)智能体客户端安装操作(Linux/windows/mac)

1.下载客户端 使用提供的账号登录集成平台后台(https://www.datalinkx.cn/),点击左侧菜单栏【智能体】→【智能体】进入到智能体列表界面,在该界面我们找到功能栏中的下载按钮点击则会弹出下载界面,在该界面我们可以选择不同的系统操作系统来下载对应版…

067B-基于R语言平台Biomod2模型的物种分布建模与数据可视化-高阶课程【2025】

课程培训包含:发票全套软件脚本学习数据视频文件导师答疑 本教程旨在通过系统的培训学习,学员可以掌握Biomod2模型最新版本的使用方法,最新版包含12个模型(ANN, CTA, FDA, GAM, GBM, GLM, MARS, MAXENT, MAXNET, RF, SRE, XGBOOST…

【Spring】Spring DI(依赖注入)详解—集合类型的注入——List、Set、Map的配置与注入

一、引言 Spring依赖注入不仅能简化对象的创建和管理,还能使得代码更加灵活和可维护。尤其是在处理集合类型的依赖时,Spring的DI机制提供了更为灵活的方式来管理和注入多个依赖。 1.1 依赖注入的重要性 在大型应用中,类与类之间的关系往往…

贵州省贵安新区地图+全域数据arcgis格式shp数据矢量路网地名+卫星影像底图下载后内容测评

贵州省贵安新区地图全域数据arcgis格式shp数据矢量路网地名卫星影像底图 贵安新区地图是一款基于ArcGIS格式的地理信息系统数据集,包含2022年3月更新的详尽矢量路网、地名信息以及卫星影像底图。这款数据集是针对贵安新区这一特定区域设计的,对于规划、…

30分钟学会css

CSS 基本语法 CSS(Cascading Style Sheets)是一种样式表语言,用于描述 HTML(或 XML)文档的呈现。它可以控制网页元素的颜色、字体、布局等外观样式,实现内容与表现的分离,让网页设计更加灵活和…

pycharm完成git项目的拉取及修改,并保存为自己的项目,以cosyvoice为例

1.新建一个项目,如图 等待几分钟。因为还要虚拟环境的建立等。 2.克隆项目源码及提前准备(备) a.git的路径。 b.githube相关设置 左角。查看。 在对话框中,填写要摘取的仓库,提示非空目录。我给加了一个main 完成后&a…

Appium(一)--- 环境搭建

一、Android自动化环境搭建 1、JDK 必须1.8及以上(1) 安装:默认安装(2) 环境变量配置新建JAVA_HOME:安装路径新建CLASSPath%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar在path中增加:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;(3) 验证…

C05S17-Redis数据库架设

一、Redis 1. Redis概述 Redis数据库属于NoSQL,是非关系型数据库,除主流的关系型数据库外,都认为是非关系型数据库。 非关系型数据库也有库,但是是系统自带的,不用创建、也不能创建。也无需建表,直接在系…

Spark是什么?Flink和Spark区别

Spark是什么?Flink和Spark区别 一、Spark二、Spark和Flink区别三、总结 一、Spark Apache Spark 是一个开源的大数据处理框架,主要用于大规模数据处理和分析。它支持多种数据处理模式,包括批处理、流处理、SQL 查询、机器学习和图处理等。 核…

Ant Design中Flex布局、Grid布局和Layout布局详解

好的,我们来更详细地探讨 Ant Design 中的 Flex布局、Grid布局 和 Layout布局 的特点、用法、适用场景,以及如何灵活运用它们来构建页面。下面将从各个方面进行更深入的分析,并提供具体的实例。 VueFlex布局实现响应式布局 1. Flex布局 概念…

Redis两种主要的持久化方式是什么?

Redis支持两种主要的持久化方式,它们分别是RDB(Redis Database Snapshotting)和AOF(Append Only File)。以下是这两种持久化方式的详细介绍: 一、RDB(Redis Database Snapshotting) …

flink cdc oceanbase(binlog模式)

接上文:一文说清flink从编码到部署上线 环境:①操作系统:阿里龙蜥 7.9(平替CentOS7.9);②CPU:x86;③用户:root。 预研初衷:现在很多项目有国产化的要求&#…