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:8080

  tomcat2:
   image: tomcat:8.0
   ports:
    - 8081:8080

  redis1:
   image: redis:6.0.8
   ports:
    - 6379:6379

  mysql:
   image: mysql:5.7
   ports:
    - 3306:3306
   environment:  #给当前容器启动指定环境 类似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.9
    restart: always
    environment:
      - PRE_CREATE_DB=cadvisor
    ports:
      - "8083:8083"        
      - "8086:8086"            
    volumes:
      - ./data/influxdb:/data

  cadvisor:
    image: google/cadvisor:v0.32.0
    links:
      - influxdb:influxsrv
    command:
      - -storage_driver=influxdb
      - -storage_driver_db=cadvisor
      - -storage_driver_host=influxsrv:8086
    restart: always
    ports:
      - "8080:8080"
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:rw
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro

  grafana:
    image: grafana/grafana:8.5.2
    user: '104'
    restart: always
    links:
      - influxdb:influxsrv
    ports:
      - "3000:3000"
    volumes:
      - grafana_data:/var/lib/grafana
    environment:
      - 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:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

docker安装Postgres-XL集群及踩过的N个坑

说明:本文是在一个机器内部用docker创建了三台centos,然后构建的pgxl集群 文章目录 1. 学习docker2. 创建三台centos3. 安装SSH4. 创建新用户postgres5. 关闭防火墙 关闭selinux6. 配置免密登录7. 下载并传输Postgres-XL的源码8. 配置环境变量10. 安装11…

动态规划学习——最长回文子序列,让字符串变成回文串的最小插入次数

一,最长回文串 1.题目 给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度。 子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。 示例 1: 输入&…

视频剪辑实战:如何制作具有吸引力的画中画视频,批量剪辑技巧

随着社交媒体的兴起,视频制作已经成为一项重要的技能。在众多视频制作软件中,画中画视频备受瞩目。这种视频格式允许在同一个画面中展示两个或多个视频,使视频更具吸引力和创新性。这篇文章中,将讲解云炫AI智剪如何制作具有吸引力…

微三云胡佳东谈消费增值:重塑经济模式的未来趋势

消费增值:重塑经济模式的未来趋势 在当前的全球经济环境下,消费增值的概念正逐渐受到广泛的关注。这一模式的崛起,不仅仅是一种商业模式的创新,更代表着我们对经济运行的理解和探索在不断深化。本文将探讨消费增值模式的内涵&…

激光炸弹(二维前缀和)-Java版

import java.io.*;/** 题目分析:一个最大5000 * 5000 的矩阵, 爆炸范围在 [0,10e9]* 地图上的目标是随机分布,如果要暴力计算每一个区间R的权值,会很麻烦* 可以用二维前缀和先将权值存起来* for(int i 1;i < n;i ) {for(int j 1;j < m;j ) {g[i][j] g[i][j-1] g[i-1]…

Ubuntu宝塔面板本地部署Emlog个人博客网站并远程访问【内网穿透】

文章目录 前言1. 网站搭建1.1 Emolog网页下载和安装1.2 网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2.Cpolar稳定隧道&#xff08;云端设置&#xff09;2.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 3. 公网访问测试总结 前言 博客作为使…

PostgreSQL 技术内幕(十二) CloudberryDB 并行化查询之路

随着数据驱动的应用日益增多&#xff0c;数据查询和分析的量级和时效性要求也在不断提升&#xff0c;对数据库的查询性能提出了更高的要求。为了满足这一需求&#xff0c;数据库引擎不断经历创新&#xff0c;其中并行执行引擎是性能提升的重要手段之一&#xff0c;逐渐成为数据…

openGauss学习笔记-147 openGauss 数据库运维-备份与恢复-逻辑备份与恢复之gs_dump

文章目录 openGauss学习笔记-147 openGauss 数据库运维-备份与恢复-逻辑备份与恢复之gs_dump147.1 背景信息147.2 注意事项147.3 语法147.4 参数说明147.4.1 通用参数&#xff1a;147.4.2 转储参数&#xff1a;147.4.3 连接参数&#xff1a; 147.5 说明147.6 示例 openGauss学习…

List的元素覆盖问题

问题场景 在备课底层JDBC链接链接数据库时&#xff0c;将读取的数据封装到对象中并添加到list集合中出现了问题。 错误逻辑 代码编写的考量为减少对象占用内存。想通过一个对象完成数据的传递和保存。 核心问题 List集合存储的是每一个对象的引用地址&#xff0c;如果引用的…

如何选择合适水下应用的集成电缆传感器?

来源&#xff1a;宏集科技 工业物联网丨宏集干货 | 如何选择合适水下应用的集成电缆传感器&#xff1f; 原文链接&#xff1a;https://mp.weixin.qq.com/s/wbN40niOgpUHy1iSH9Ad3Q 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; 前言 许多工业过程都要求将传感器浸…

如何使用技术 SEO 优化 Pinterest 富图钉

Pinterest 可以影响搜索引擎排名&#xff0c;尤其是谷歌。不过&#xff0c;它的作用方式与其他搜索引擎优化因素不同。这就是 Google 将图钉放在 nofollow 列表中。但是&#xff0c;它们仍然可以作为搜索引擎优化的一个重要因素。 高质量的图钉具有高分辨率的图片、吸引人的内…

mybatis入门

Java的三大框架&#xff1a;Spring&#xff0c;SpringMVC,MyBatis 框架其实就是对通用代码的封装&#xff0c;提前写好了一堆接口和类&#xff0c;我们可以在做项目的时候直接引入这些接口和类&#xff0c;基于这些现有的接口和类进行开发&#xff0c;可以大大提高开发效率 J…

【网络编程】-- 01 概述、IP

网络编程 1 概述 1.1 计算机网络 (连接分散计算机设备以实现信息传递的系统) 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备&#xff0c;通过通信线路连接起来&#xff0c;在网络操作系统&#xff0c;网络管理软件及网络通信协议的管理和协调下&…

SmartChart:一站式数据可视化解决方案

在当今的数据驱动的世界中&#xff0c;数据可视化已经成为了一个重要的工具&#xff0c;它可以帮助我们理解复杂的数据集&#xff0c;并从中提取有价值的信息。SmartChart就是这样一个强大的数据可视化工具&#xff0c;它提供了一站式的数据可视化解决方案&#xff0c;无论你是…

(十五)Flask覆写wsgi_app函数实现自定义中间件

中间件 一、剖析&#xff1a; 在前面讲session部分提到过&#xff1a;请求一进来&#xff0c;Flask会自动调用应用程序对象【Flask(__name__)】的__call__方法&#xff0c;这个方法负责处理请求并返回响应&#xff08;其实如下图&#xff1a;其内部就是wsgi_app方法&#xff…

【重磅来袭!!!工程师必备初始化建工程软件】

重磅来袭&#xff01;&#xff01;&#xff01;工程师必备初始化软件 每个工程建立前&#xff0c;你是否为了要建立各种文件夹而烦恼&#xff1f;你是否为了因为工程每次文件夹不统一找不到文件而烦扰&#xff1f;来咯&#xff0c;Project Initial V1_0软件只需输入工程名称&am…

安装you-get(mac)

1、首先要有python环境 2、更新pip python -m pip install --upgrade pip 3、安装you-get pip install you-get;

keep-alive 是 Vue 的一个内置组件,用于缓存其他组件的实例,以避免重复渲染和销毁,它可以在需要频繁切换的组件之间提供性能优化

目录 keep-alive 使用 keep-alive 的示例代码&#xff1a; 手动清除组件缓存的示例代码&#xff1a; keep-alive 组件有以下几个优点&#xff1a; keep-alive 的原理&#xff1a; 使用 keep-alive 组件&#xff0c;你可以包裹需要缓存的组件&#xff0c;然后这些组件在切…

基于ssm安徽新华学院实验中心管理系统论文

摘 要 本安徽新华学院实验中心管理系统的设计目标是实现安徽新华学院实验中心的信息化管理&#xff0c;提高管理效率&#xff0c;使得安徽新华学院实验中心管理工作规范化、科学化、高效化。 本文重点阐述了安徽新华学院实验中心管理系统的开发过程&#xff0c;以实际运用为开…

Pytest+Allure生成自动化测试报告!

前言 在自动化测试中&#xff0c;有unittestHTMLTestRunner自动化测试报告&#xff0c;但是生成的测试报告不够美观详细&#xff0c;今天我们来学习一下PytestAllure生成自动化测试报告。 一&#xff1a;安装python中的allure依赖库 在dos窗口中&#xff0c;输入下面三个命令…