【Docker学习三部曲】——进阶篇

news2024/10/5 15:32:40

Compose

1️⃣ 什么是 Docker-Compose ?

Docker ComposeDocker官方提供的一个用于定义和运行多个容器的工具,它采用了声明式的语法定义单个应用程序的多个容器以及它们之间的相互关系和依赖关系。

使用Docker Compose,您可以通过一个配置文件来管理多个Docker容器,从而更轻松地部署和管理分布式应用程序。

Compose文件可以定义多个容器、网络、卷以及它们之间的关系,包括容器之间的依赖关系、所需的环境变量和网络端口等信息。然后,您可以使用单个命令启动或停止所有容器。

Docker Compose可以用于开发、测试和部署应用程序,它为开发人员和运维人员提供了一种统一的方式来定义和管理应用程序的各个组件。

Docker Compose的优点包括:

  • 简化了应用程序的部署和管理过程;
  • 提供了一种一致性的开发和测试环境;
  • 提高了可移植性;
  • 提高了应用程序的可扩展性和灵活性。

总的来说,Docker Compose是一种方便易用的工具,可以帮助用户更轻松地管理分布式应用程序,提高应用程序开发和部署的效率

2️⃣ 下载安装 Compose

# 通过GitHub仓库下载
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

curl 是一种命令行工具,用于与服务器进行数据交互,支持多种协议,如HTTP、HTTPS、FTP
curl 提供了一系列参数,用于指定请求的参数和选项。以下是常用的 curl 命令参数:

-X: 指定请求方法,如GET、POST、PUT、DELETE等;
-H: 指定请求头信息;
-d: 指定请求体数据;
-u: 指定认证信息,格式为username:password;
-o: 指定输出文件;
-s: 静默模式,不显示进度和错误信息;
-i: 显示响应头信息;
-v: 显示请求和响应的详细信息;
-k: 允许不验证SSL证书;
-L: 自动跟随重定向;
-c: 保存cookie到文件;
-b: 从文件中读取cookie;
--cert/--key: 指定SSL客户端证书和私钥;
--cacert: 指定自定义的CA证书。
# 设置权限
chmod +x /usr/local/bin/docker-compose
# 查看docker-compose版本
docker-compose --version

在这里插入图片描述

# 使用curl方式安装的compose可以采用下面的方式卸载
rm /usr/local/bin/docker-compose

3️⃣ Compose 的核心概念

(1)一文件 docker-compose.yml

docker-compose.yml 是一个Docker Compose项目的配置文件,它使用声明式语法来定义一个或多个容器、网络、卷和它们之间的关系

docker-compose.yml文件可以被认为是一个项目的蓝图,它描述了如何配置Docker容器,可以简化Docker多容器部署的管理和协调工作

  • docker-compose.yml文件中可以通过添加服务定义来指定每个应用程序的组件
  • 每个服务定义包含容器名称、镜像名称、环境变量、要暴露的端口等信息
  • 服务之间可以通过指定依赖性来显式地定义它们之间的关系,从而更精细地管理应用程序的不同组件
  • docker-compose.yml文件中还可以指定卷、网络等选项,以进一步配置应用程序的组成部分

例如,以下是一个简单的docker-compose.yml文件示例,定义了一个Web服务和一个数据库服务

version: "3"
services:
  web:
    image: nginx
    ports:
      - "80:80"
  db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: my-secret-pw

以上示例中,定义了两个服务:webdb

  • 服务web使用的镜像为nginx,将宿主机的80端口映射到容器的80端口
  • 服务db使用mysql镜像,指定了MYSQLROOTPASSWORD环境变量
  • 在实际使用过程中,可根据实际应用程序的需要修改和添加相关的服务和选项

总的来说,docker-compose.yml是用于定义和管理Docker Compose项目的主要配置文件,可以大大简化Docker多容器应用程序的部署和管理过程

(2)两要素

  • 服务:一个个应用容器实例,比如订单微服务、库存微服务、mysql容器、nginx容器或者redis容器
  • 工程:由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义

4️⃣ Compose 使用步骤:

(1)编写Dockerfile,编写各个Docker微服务应用并构建出对应镜像
(2)使用 docker-compose.yml 定义一个完整的业务单元,安排好整体应用中的各个容器服务
(3)最后执行 docker-compose up 命令来一键启动并运行整个应用程序,完成一键部署上线

5️⃣ Compose 常用命令:

docker-compose -h                           # 查看帮助
docker-compose up                           # 启动所有docker-compose服务
docker-compose up -d                        # 启动所有docker-compose服务并后台运行
docker-compose down                         # 停止并删除容器、网络、卷、镜像。
docker-compose exec  yml里面的服务id                 # 进入容器实例内部  docker-compose exec docker-compose.yml文件中写的服务id /bin/bash
docker-compose ps                      # 展示当前docker-compose编排过的运行的所有容器
docker-compose top                     # 展示当前docker-compose编排过的容器进程
 
docker-compose logs  yml里面的服务id     # 查看容器输出日志
docker-compose config     # 检查配置
docker-compose config -q  # 检查配置,有问题才有输出
docker-compose restart   # 重启服务
docker-compose start     # 启动服务
docker-compose stop      # 停止服务

Compose 进阶内容待补充

CIG容器重量级监控系统

监控系统三剑客介绍

1️⃣ 为什么要使用CIG容器呢?

在之前,我们使用 docker stats 指令查看容器资源使用的实时信息,对于一些小公司可以基本满足

但是docker stats统计结果只能是当前宿主机的全部容器,数据资料是实时的,没有地方存储、没有健康指标过线预警等功能

2️⃣ 介绍我们的容器监控三剑客

  • CAdvisor 负责监控收集、InfluxDB 负责存储数据、Grafana 负责展示图表
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Compose 容器编排实现

# 创建文件夹
mkdir -p /mydocker/cig
# 进入我们的目录
cd /mydocker/cig
# 编写 compose.yml 文件 [官方不推荐使用docker-compose.yml,但仍可以识别]
vim compose.yml

# 以下是 compose.yml 的内容
version: '3.1'
 
volumes:
  grafana_data: {}
 
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
  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:
  user: "104"
  image: grafana/grafana
  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
    - INFLUXDB_NAME=cadvisor
    - INFLUXDB_USER=root
    - INFLUXDB_PASS=root


# 检查我们的 compose.yml 是否有语法错误
docker-compose config -q
# 启动
docker-compose up

在这里插入图片描述

# 查看容器运行状态
docker ps

在这里插入图片描述

以下测试都需要我们提前在防火墙、安全组放行对应端口

1️⃣ 测试 Advisor 收集服务

根据我们的配置,使用 IP:8080 来访问我们的 Advisor
在这里插入图片描述
在这里插入图片描述

2️⃣ 测试 influxdb 的数据存储服务

通过 IP:8083 来访问我们的 influxdb/
在这里插入图片描述
3️⃣ 测试 grafana 展现服务

在这里插入图片描述
登录之后,需要对 grafana 进行配置,有针对性的进行数据可视化

(1)配置数据源

在这里插入图片描述
(2)选择 influxdb 数据源

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3)配置 panel 面板

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

到这里 cAdvisor+InfluxDB+Grafana 容器监控系统就部署完成了

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

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

相关文章

消防规范图集大全

总说明 A-800X650 (1)箱体长.煌尺寸代号(尺寸单位:mm) B-1000X700; C-1200X750 D-带灭火器箱组合式消防柜; E-非标准箱。 1本图集是依据现行有关国家标准和规范 在1999年编制的《室内消火栓安装》 (2)水带安置方式代号 (99S202)全国通用给水排水标准图集的基础上重新编制的。 P…

理解TreeMap结构及其实现

TreeMap是基于红黑树(Red-Black tree)的 NavigableMap 实现(是自平衡的二叉树)。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。 一、对外开放API TreeMap提供了保证…

GPT模型支持下的Python-GEE遥感云大数据分析、管理与可视化技术及多领域案例实践

随着航空、航天、近地空间等多个遥感平台的不断发展,近年来遥感技术突飞猛进。由此,遥感数据的空间、时间、光谱分辨率不断提高,数据量也大幅增长,使其越来越具有大数据特征。对于相关研究而言,遥感大数据的出现为其提…

全网最全的快速排序方法--Hoare快排 挖坑法快排 二路快排 三路快排 非递归快排

目录 一.快速排序 1.基本介绍 2.基本思想 二.Hoare快排 0.前情知识 1.交换数组中的两个元素 2.指定范围的插入排序 1.基本思路 2.代码实现 3.优化思路 三.挖坑法快排(校招中适用) 1.基本思路 2.代码实现 四.二路快排 1.基本思路 2.代码实现 3.优化思路 五.三…

浅谈ChatGPT(人工智能)

带你了解ChatGPT 1.ChatGPT是什么2.ChatGPT的特点3.ChatGPT的用途4.ChatGPT出现给社会带来的影响5.ChatGPT存在的问题6.ChatGPT的未来发展趋势7.总结 1.ChatGPT是什么 ChatGPT(全名:Chat Generative Pre-trained Transformer),是美…

如何通过开源项目搭建私有云平台--第三步:部署镜像仓库

第三步 部署镜像仓库 采用开源的harbor来进行部署,分别在两台服务器进行部署,然后实现两个镜像仓库数据同步 具体部署环境如下: 10.10.10.3 主harbor 操作系统: centos 8 10.10.10.4 备用harbor 操作系统:cen…

【使用者手册】手动改善IntelliJ IDEA和Scala插件性能

IntelliJ IDEA,是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。 在…

解决webassembly pthread 子线程调用主线程js问题

解决webassembly pthread 子线程调用主线程js问题 背景: web端项目做了一段时间后,我们需求是加载工程是异步的,主线程会调用wasm方法,wasm内部用pthread创建出来线程,然后在这个线程里边处理任务,处理完…

园区智慧导览地图软件,智慧工厂导航定位怎么解决方案的

智慧工厂导航定位怎么解决方案的地图新基建是行业的核心数字基础需求之一,行业内中已构建了较为完整的城市级地理信息系统。园区管理涉及众多方面,因此园区的智慧信息化建设至关重要,需求越来越广泛。在智慧园区中,基于园区的电子…

【C++类和对象】类和对象(上){初识面向对象,类的引入,类的定义,类的访问限定符,封装,类的作用域,类的实例化,类对象模型,this指针}

一、面向过程和面向对象初步认识 C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。 C是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。…

瑞吉外卖:项目介绍和环境搭建

文章目录 软件开发基础软件开发流程角色分工软件环境 瑞吉外卖项目介绍项目介绍开发流程技术选型功能架构角色 环境搭建 软件开发基础 软件开发流程 需求分析:产品原型(大体结构、页面、功能等)和需求规格说明书设计:产品文档、…

TCP/UDP的头部字段细节

目录 TCP头部字段 一、源端口目的端口(各占2字节) 二、序列号(4字节) 三、确认号(4字节) 四、数据偏移(4位) 五、保留位(6位) 六、六个控制位&#xff…

『pyqt5 从0基础开始项目实战』09.本地数据配置文件的保存与读取之txt类型(保姆级图文)

目录 导包和框架代码绑定按钮点击事件在dialog中编写代理配置弹窗UI和功能实现代理配置弹窗UI方法完整代码main.pythreads.pydialog.py 总结 欢迎关注 『pyqt5 从0基础开始项目实战』 专栏,持续更新中 欢迎关注 『pyqt5 从0基础开始项目实战』 专栏,持续…

Jenkins 实现自动化部署

安装 windows下安装:https://blog.csdn.net/u014641168/article/details/130286547 linux下安装:https://blog.csdn.net/u014641168/article/details/130282439 Jenkins支持JDK1.8对应版本说明:https://blog.csdn.net/u014641168/article/…

STM32 学习笔记_3 程序编写基础;arm 内核架构

程序编写基础 Keil 编辑器设置 抛开 tab 和空格哪个好看不谈,不同编译器设置格式不同,空格比较保险。 用户关键字:打出来的时候会高亮。 代码提示:(symbols after 是几个字符后开始提示关键字的意思) 以上…

6、索引的数据结构

3.3 常见的索引概念 索引按照物理实现方式,索引可以分为 2 种:聚簇和非聚簇索引 1、聚簇索引 5、索引的代价 空间上的代价 每建立一个索引都要为它建立一棵B树,每一棵B树的每一个节点都是一个数据页,一个页默认会占用 16KB 的存…

jsp827+java心理测评管理系统dzkfB4程序j2EE+mysql

现代社会的大学生是21世纪的主人,他们不仅需要具有为社会做贡献的真才实学,更需要健康的心理。大学生的身心健康,人格健全和谐发展是他们学习的需要,是社会对未来参与者素质的要求。 1.系统登录:系统登录是…

thinkphp:插入数据到数组

一、插入数据到数组首位(array_unshift),这里全用空值进行插入 $array [a,b,c]; //在首位加入一个空值 array_unshift($array ,); //将数组输出 print_r($array); 输出结果: 二、插入数据到数组末尾(array_push&…

docker安装kafka,并集成springboot进行测试

大家好,今天我们开始学习kafka中间件,今天我们改变一下策略,不刷视频学习,改为实践学习,在网上找一些案例功能去做,来达到学习实践的目的。 首先,是安装相关组件。 1. docker安装安装 1.1 yu…

深度学习中的各种不变性

不变性 平移不变性(Translation Invariance)旋转不变性(Ratation Invariance)尺度不变性(Size Invariance)光照不变性(Illumination Invariance)仿射不变性(Affine Invar…