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.rhkb.cn/news/500217.html

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

相关文章

[羊城杯 2024]hiden

一顿解压之后发现有两个文件: 尝试了Rot47解密,得到一个看起来挺像一回事的解码结果: 再将得到的解码结果试试Rot13解密,成功得到正确的解码结果: import wave with open(flag.txt, rb) as f:txt_data f.read()file_l…

LeetCode - 初级算法 数组(只出现一次的数字)

只出现一次的数字 这篇文章讨论如何找到一个数组中只出现一次的数字,确保算法的时间复杂度为线性,且只使用常量额外空间。 免责声明:本文来源于个人知识与公开资料,仅用于学术交流。 描述 给定一个非空整数数组 nums,除了某个元素只出现一次以外,其余每个元素均出现两…

【谷歌开发者月刊】十二月精彩资讯回顾,探索科技新可能

我们在今年的尾声中回顾本月精彩,开发者们借助创新技术为用户打造温暖的应用体验,展现技术与实用的结合。欢迎您查阅本期月刊,掌握最新动态。 本月看点 精彩看点多多,请上下滑动阅览 01DevFest 北京站和上海站圆满举办&#xff0c…

LinuxC高级day4

作业: 1.思维导图 2.终端输入一个C源文件名(.c结尾)判断文件是否有内容,如果没有内容删除文件,如果有内容编译并执行改文件。 3.终端输入两个文件名,判断哪个文件的时间戳更新

数据中台与数据治理服务方案[50页PPT]

本文概述了数据中台与数据治理服务方案的核心要点。数据中台作为政务服务数据化的核心,通过整合各部门业务系统数据,进行建模与加工,以新数据驱动政府管理效率提升与政务服务能力增强。数据治理则聚焦于解决整体架构问题,确保数据…

MAC环境安装(卸载)软件

MAC环境安装(卸载)软件 jdknode安装node,并实现不同版本的切换背景 卸载node从node官网下载pkg安装的node卸载用 homebrew 安装的node如果你感觉删的不够干净,可以再细分删除验证删除结果 jdk 1.下载jdk 先去官网下载自己需要的版…

时间序列预测算法---LSTM

文章目录 一、前言1.1、深度学习时间序列一般是几维数据?每个维度的名字是什么?通常代表什么含义?1.2、为什么机器学习/深度学习算法无法处理时间序列数据?1.3、RNN(循环神经网络)处理时间序列数据的思路?1.4、RNN存在哪些问题?…

LinuxC高级day2

1.在家目录下创建目录文件,dir a.dir下创建dir1和dir2 b.把当前目录下的所有文件拷贝到dir1中, c.把当前目录下的所有脚本文件拷贝到dir2中 d.把dir2打包并压缩为dir2.tar.xz e.再把dir2.tar.xz移动到dir1中 f.解压dir1中的压缩包 g.使用tree工具&#x…

14. 日常算法

1. 面试题 02.04. 分割链表 题目来源 给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你不需要 保留 每个分区中各节点的初始相对位置。 class Solution { public:ListNo…

ubuntu 如何使用vrf

在Ubuntu或其他Linux系统中,您使用ip命令和sysctl命令配置的网络和内核参数通常是临时的,这意味着在系统重启后这些配置会丢失。为了将这些配置持久化,您需要采取一些额外的步骤。 对于ip命令配置的网络接口和路由,您可以将这些配…

SpringMVC进阶(自定义拦截器以及异常处理)

文章目录 1.自定义拦截器 1.基本介绍 1.说明2.自定义拦截器的三个方法3.流程图 2.快速入门 1.Myinterceptor01.java2.FurnHandler.java3.springDispatcherServlet-servlet.xml配置拦截器4.单元测试 3.拦截特定路径 1.拦截指定路径2.通配符配置路径 4.细节说明5.多个拦截器 1.执…

Mac电脑python多版本环境安装与切换

我当前是python3.9.6环境,需要使用3.9.8环境,通过brew安装3.9.8版本,然后通过pyenv切换环境 步骤 1: 安装 pyenv brew install pyenv brew install pyenv-virtualenv 步骤 2: 安装 Python 3.9.8(使用 pyenv 安装指定版本的 Pyth…

【蓝桥杯——物联网设计与开发】拓展模块4 - 脉冲模块

目录 一、脉冲模块 (1)资源介绍 🔅原理图 🔅采集原理 (2)STM32CubeMX 软件配置 (3)代码编写 (4)实验现象 二、脉冲模块接口函数封装 三、踩坑日记 &a…

基于服务器部署的综合视频安防系统的智慧快消开源了。

智慧快消视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。国产化人工智能“…

12.31【Linux】shell脚本【运行方式,修改环境变量,数组】思维导图 内附练习

1.思维导图 2练习: 1.尝试将下列指令放到脚本中运行 在家目录下创建目录文件dir1,把/etc/passwd拷贝到dir1中,把/etc/group拷贝到dir1中并重命名为grp.txt,使用tree指令,显示dir1目录的文件树,把dir1&am…

win11 vs2022 opencv 4.10 camshift示例程序运行

记录win11 vs2022 opencv 4.10下 camshift等示例程序的单步debug启动方式,方便了解源码。 debug版本编译通过,但运行时报出大量日志信息(部分dll加载FAILED后会自动找兼容dll)。但也能继续运行,效果如下 release版本可以直接运行&#xff0…

赛博周刊·2024年度工具精选(图片资源类)

1、EmojiSpark emoji表情包查找工具。 2、fluentui-emoji 微软开源的Fluent Emoji表情包。 3、开源Emoji库 一个开源的emoji库,目前拥有4000个emoji表情。 4、中国表情包大合集博物馆 一个专门收集中国表情包的项目,已收录5712张表情包,并…

通过Cephadm工具搭建Ceph分布式存储以及通过文件系统形式进行挂载的步骤

1、什么是Ceph Ceph是一种开源、分布式存储系统,旨在提供卓越的性能、可靠性和可伸缩性。它是为了解决大规模数据存储问题而设计的,使得用户可以在无需特定硬件支持的前提下,通过普通的硬件设备来部署和管理存储解决方案。Ceph的灵活性和设计…

JVM对象创建过程

1 类加载检查 jvm通过new指令开始创建对象jvm执行new指令时,首先通过指令参数从常量池中取到需要创建的类名检查该类是否被加载,解析,和初始化过如果没有,则执行类的加载过程new指令对应到java语言具体的操作为 new 关键字创建对象…

逆向生成原理

逆向工程原理 前言逆向工程的原理1.Freemarker模板引擎2.逆向工程的原理 前言 在我们实际开发过程中,开发流程大体可以分为需求分析、数据库字段设计、然后再开始编码,然后就开始创建我们实体类、controller、service、serviceImpl、mapper,…