Docker-compose容器编排与容器监控

一、Docker-compose

1、概念:

Docker-Compose 是 Docker 官方的开源项目,负责实现对Docker容器集群的快速编排。

2、作用:

Docker-Compose可以管理多个Docker容器组成一个应用。需要定义一个yaml格式的配置文件 docker-compose.yml,配置好多个容器之间的调用关系,然后只需要一个命令就能同时启动/关闭这些容器。

3、compose核心概念:

① 一文件:docker-compose.yml

② 两要素:

项目 (project):由一组关联的容器组成的一个完整业务单元;

服务 (service):一个项目中的某一个容器实例 。

4、compose 使用步骤:

① 编写 Dockerfile 定义各个应用容器,构建出对应的镜像文件;

② 使用 docker-compose.yml,定义一个完整的业务单元,安排好整体应用中的各个容器服务;

③ 执行 docker-compose up 命令,创建并运行整个应用程序,完成一键部署上线。

5、compose示例:

compose模版:https://docker_practice.gitee.io/compose/compose_file.html

(1) 创建一个项目:

mkdir /root/ems/ (以ems目录作为项目名)

(2) 在ems目录里创建一个docker-compose.yml文件:

① version:

每个模版文件需要写上version版本号,代表所使用的docker-compose的项目版本。

● 版本号的选择与docker引擎有关:

官方提供的compose版本号与docker引擎的对应关系:

② services:

在模版文件里定义需要启动的容器:

● 启动 tomcat:

若要启动另一个tomcat,则要再写一组服务:

● 启动 redis:

● 启动 mysql:

(3) 启动docker-compose服务:

docker compose up

这个命令必须在docker-compose.yml配置文件目录下执行

● 查看服务:

tomcat:

redis:

mysql:

● 停止服务:

附:完整docker-compose.yml

#代表使用的docker-compose项目版本号
version: "3.8"services:tomcat1:            #tomcat服务名(名称唯一)image: tomcat:8.0   #所使用的镜像ports:              #宿主机8080端口映射容器8080端口- 8080:8080tomcat2:image: tomcat:8.0ports:- 8081:8080redis1:image: redis:6.0.8ports:- 6379:6379mysql:image: mysql:5.7ports:- 3306:3306environment:  #给当前容器启动指定环境 类似docker run -e MYSQL_ROOT_PASSWORD=123456- "MYSQL_ROOT_PASSWORD=123456" volumes:   #给当前容器指定数据卷 类似docker run -v- /root/mysqldata1:/var/lib/mysql

(4) 在IDEA上创建docker-compose.yml:

远程连接docker服务器,创建一个docker-compose.yml

编写docker-compose.yml,可根据提示信息自动补齐,编写完成后点击红框所示图标,即可完成上传

宿主机上启动docker-compose服务:

6、docker-compose 常用命令:

(1) up:

docker compose up [options] [SERVICE...]

该命令会尝试自动完成包括构建镜像,创建服务,启动服务,并关联服务相关容器的一系列操作。

docker compose up:启动的容器都在前台,控制台将会同时打印所有容器的输出信息,可以很方便进行调试。

docker compose up -d:在后台启动并运行所有的容器。

(2) down:

docker compose down:关闭up命令所启动的服务容器,并移除网络。

(3) exec:

docker compose exec 服务id:进入某个服务容器。

(4) restart:

docker compose restart [options] [SERVICE...]:重启项目中的服务

-t, --timeout TIMEOUT 指定重启前停止容器的超时(默认为 10 秒)。

(5) rm:

docker compose rm [options] [SERVICE...]

删除所有停止状态的服务容器,先执行 docker compose stop 命令停止容器。

-f 强制直接删除,包括非停止状态的容器。

-v 删除容器所挂载的数据卷。

(6) top:

docker compose top

查看项目中所有服务容器运行进程,或某个指定id服务容器的进程。

(7) logs:

docker compose logs [options] [SERVICE...]

查看整个项目或某个id服务容器的日志。

7、docker-compose 模版文件常用指令:

https://vuepress.mirror.docker-practice.com/compose/compose_file/#

二、可视化工具Portainer

1、简介:

Portainer是一款轻量级的应用,提供图形化界面,用于管理Docker环境。

官网:Portainer: Container Management Software for Kubernetes and Docker

2、安装:

(1) docker 命令安装:

docker run -d -p 8000:8000 -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:2.13.0-alpine

(2) 登录:

① 访问地址:服务器ip:9000;

② 设置 admin 密码;

类似 docker system df:

3、Portainer创建容器:

三、容器监控CIG

1、简介:

CAdvisor (监控收集) + InfluxDB (存储数据) + Granfana (展示图表),合称CIG

(1) CAdvisor:

CAdvisor是一个容器资源监控工具,包括容器的内存、CPU、网络IO、磁盘IO等监控,提供了一个Web页面用于查看容器的实时运行状态。

CAdvisor默认存储2分钟的数据,而且只针对单物理机。不过CAdvisor提供了很多数据集成接口,支持 InfluxDB、Redis、Kafka、Elasticsearch等集成,可以加上对应配置将监控数据发往这些数据库存储起来。

(2) InfluxDB:

为了持久化存储数据和统一收集展示监控数据,需要将数据存储到InfluxDB中。InfluxDB是一个时序数据库,专门用于存储时序相关数据,很适合存储 CAdvisor 的数据。

(3) Granfana:

Grafana是一个开源的数据监控分析可视化平台,支持多种数据源配置和丰富的插件及模板功能,支持图表权限控制和报警。

2、docker-compose 部署 CIG:

(1) 新建docker-compose.yml:

① 新建目录:mkdir /mydocker/cig -p

② 编写docker-compose.yml:

services:influxdb:image: tutum/influxdb:0.9restart: alwaysenvironment:- PRE_CREATE_DB=cadvisorports:- "8083:8083"        - "8086:8086"            volumes:- ./data/influxdb:/datacadvisor:image: google/cadvisor:v0.32.0links:- influxdb:influxsrvcommand:- -storage_driver=influxdb- -storage_driver_db=cadvisor- -storage_driver_host=influxsrv:8086restart: alwaysports:- "8080:8080"volumes:- /:/rootfs:ro- /var/run:/var/run:rw- /sys:/sys:ro- /var/lib/docker/:/var/lib/docker:rografana:image: grafana/grafana:8.5.2user: '104'restart: alwayslinks:- influxdb:influxsrvports:- "3000:3000"volumes:- grafana_data:/var/lib/grafanaenvironment:- HTTP_USER=admin- HTTP_PASS=admin- INFLUXDB_HOST=influxsrv- INFLUXDB_PORT=8086

docker compose config -q:检查.yml文件语法

(2) 启动docker-compose文件,并检查服务是否启动:

3、测试:

(1) 浏览CAdvisor收集服务:

(2) 浏览 influxdb 存储服务:

(3) 浏览 grafana 展现服务:

初始用户名:admin ;密码:admin

● grafana 配置:

① 配置数据源:

② 配置面板panel:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/207846.shtml

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

相关文章

Fiddler抓包模拟器(雷电模拟器)

Fiddler设置 List item 打开fiddler,的options 点击OK,重启fiddler 模拟器 更改网络设置 IP可以在电脑上终端上查看 然后在模拟器浏览器中输入IP:端口 安装证书

K8s 入门指南(一):单节点集群环境搭建

前言 官方文档:Kubernetes 文档 | Kubernetes 系统配置 CentOS 7.9(2 核 2 G) 本文为 k8s 入门指南专栏,将会使用 kubeadm 搭建单节点 k8s 集群,详细讲解环境搭建部署的细节,专栏后面章节会以实战代码介绍…

Vue3+ts----根据配置项,动态生成表单

这里使用的UI框架是ElementPlus,更换其他组件直接更换constant.ts中的type配置和对应的Form组件即可. 大家可以npm install elementplus_dy_form来体验。 思路: 1.这里需要使用h函数方便控制要渲染的表单 2.传递type作为组件或html元素进行渲染&#xff…

PHP基础 - 输入输出

在 PHP 中,有多种方法可以用来输出内容。下面是其中的几种: 1、echo: 这是最常见的输出语句之一,可以输出一个或多个字符串。它是一个语言结构,可以省略括号。使用示例如下: <?php // 使用 echo 语句输出一个字符串 echo "Hello, world!\n";// 可以使用…

P1035 [NOIP2002 普及组] 级数求和题解

题目 已知&#xff1a;.显然对于任意一个整数 k&#xff0c;当 n 足够大的时候,Sn​>k。 现给出一个整数k&#xff0c;要求计算出一个最小的n&#xff0c;使得Sn​>k。 输入输出样例 输入 1 输出 2 代码 #include<iostream> using namespace std; int mai…

周周爱学习之Redis重点总结

redis重点总结 在正常的业务流程中&#xff0c;用户发送请求&#xff0c;然后到缓存中查询数据。如果缓存中不存在数据的话&#xff0c;就会去数据库查询数据。数据库中有的话&#xff0c;就会更新缓存然后返回数据&#xff0c;数据库中也没有的话就会给用户返回一个空。 1.缓…

AIGC创作系统ChatGPT网站源码,Midjourney绘画,GPT联网提问/即将支持TSS语音对话功能

一、AI创作系统 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI…

leetcode 面试题 02.02. 返回倒数第k个节点

提建议就是&#xff0c;有些题还是有联系的&#xff0c;建议就收看完 876.链表的中间节点&#xff08;http://t.csdnimg.cn/7axLa&#xff09;&#xff0c;再将这一题联系起来 面试题 02.02. 返回倒数第k个节点 题目&#xff1a; 实现一种算法&#xff0c;找出单向链表中倒数第…

这些接口自动化测试工具如果不知道,就真out了!

一、Postman Postman是一款广受欢迎的API测试工具&#xff0c;除了手动发送HTTP请求的基本功能&#xff0c;它还提供了自动化测试和脚本测试的功能&#xff0c;非常适合进行HTTP接口的自动化测试。 二、Rest-Assured Rest-Assured是一个Java库&#xff0c;专为REST服务的测试…

C++异常剖析

什么是异常&#xff1f; 在程序运行的过程中&#xff0c;我们不可能保证我们的程序百分百不出现异常和错误&#xff0c;那么出现异常时该怎么报错&#xff0c;让我们知道是哪个地方错误了呢? C中就提供了异常处理的机制。 一、异常处理的关键字 &#xff08;1&#…

联想电脑重装系统Win10步骤和详细教程

联想电脑拥有强大的性能&#xff0c;很多用户办公都喜欢用联想电脑。有使用联想电脑的用户反映系统出现问题了&#xff0c;想重新安装一个正常的系统&#xff0c;但是不知道重新系统的具体步骤。接下来小编详细介绍给联想电脑重新安装Win10系统系统的方法步骤。 推荐下载 系统之…

客厅颜值担当:木饰面电视背景墙设计。福州中宅装饰,福州装修

你是否也为客厅的装修设计而烦恼&#xff1f;现在&#xff0c;我为你带来一款高颜值的木饰面电视背景墙设计&#xff0c;它将是你客厅的亮点所在。 1️⃣ 确定背景墙的尺寸和位置 首先&#xff0c;你需要确定背景墙的尺寸和位置&#xff0c;这取决于你家电视的大小和放置位置。…

重新认识Word——多级列表和项目符号

重新认识Word——多级列表和项目符号 多级列表没有运用标题样式但标题格式统一 正式公本文书项目符号和自动编号项目符号自动编号软回车重新起头开始编号解决编号与文本距离过大问题 之前我们重新认识了Word里面的样式&#xff0c;现在的情况就是&#xff0c;我的一些文字已经运…

Python Authlib库:构建安全可靠的身份验证系统

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 在现代应用程序中&#xff0c;安全性是至关重要的&#xff0c;特别是在处理用户身份验证时。Authlib库为Python开发者提供了一套强大的工具&#xff0c;用于简化和增强身份验证和授权流程。本文将深入探讨Authli…

因小失大,一个普通的postman多接口顺序执行,让项目瘫痪了一天

Runner的使用 postman不仅可以单独运行某个接口&#xff0c;postman的 Runner模块可以运行多个接口&#xff0c;可以实现真正意义上的自动化接口测试 Runner的主要功能如下 按顺序调用接口&#xff0c;执行用例&#xff1b; 批量发送请求&#xff1b; 对接口数据进行参数化…

vuepress-----15、md用法进阶

vuepress markdown说明文档 https://www.vuepress.cn/guide/markdown.html # 示例&#xff1a;封装countUp.js为Vue组件 https://github.com/inorganik/countUp.js https://inorganik.github.io/countUp.js/ # 安装 yarn add countup.js# 创建vue文件 全局Vue组件存放位置…

<Linux>(极简关键、省时省力)《Linux操作系统原理分析之文件管理(1)》(22)

《Linux操作系统原理分析之文件管理&#xff08;1&#xff09;》&#xff08;22&#xff09; 7 文件管理7.1 文件与文件系统7.1.1 文件7.1.3 文件系统及其功能 7.2 文件的组织结构7.2.1 文件的逻辑结构7.2.2 文件的物理结构一、顺序结构&#xff08;顺序文件或连续文件&#xf…

Java来实现二叉树算法,将一个二叉树左右倒置(左右孩子节点互换)

文章目录 二叉树算法二叉树左右变换数据 今天来和大家谈谈常用的二叉树算法 二叉树算法 二叉树左右变换数据 举个例子&#xff1a; Java来实现二叉树算法&#xff0c;将一个二叉树左右倒置&#xff08;左右孩子节点互换&#xff09;如下图所示 实现的代码如下&#xff1a;以…

ECharts的颜色渐变

目录 一、直接配置参数实现颜色渐变 二、使用ECharts自带的方法实现颜色渐变 一、两种渐变的实现方法 1、直接配置参数实现颜色渐变 横向的渐变&#xff1a; //主要代码 option {xAxis: {type: category,boundaryGap: false,data: [Mon, Tue, Wed, Thu, Fri, Sat, Sun]},yA…

云上巴蜀丨云轴科技ZStack成功实践精选(川渝)

巴蜀——古政权必争之地 不仅拥有优越的战略位置 而且拥有丰富的自然资源&#xff0c;悠久的历史文化 如今的川渝经济、人口发展迅速 2023年前三季度&#xff0c;四川与重庆GDP增速均超过国家平均线&#xff0c;为6.5%为5.6% 川渝经济发展带动数字化发展浪潮 云轴科技ZSt…