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

这篇具有很好参考价值的文章主要介绍了【Docker学习三部曲】——进阶篇。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

# 使用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 负责展示图表
    【Docker学习三部曲】——进阶篇

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

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

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学习三部曲】——进阶篇

# 查看容器运行状态
docker ps

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

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

1️⃣ 测试 Advisor 收集服务

根据我们的配置,使用 IP:8080 来访问我们的 Advisor
【Docker学习三部曲】——进阶篇
【Docker学习三部曲】——进阶篇

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

通过 IP:8083 来访问我们的 influxdb/
【Docker学习三部曲】——进阶篇
3️⃣ 测试 grafana 展现服务

【Docker学习三部曲】——进阶篇
登录之后,需要对 grafana 进行配置,有针对性的进行数据可视化

(1)配置数据源

【Docker学习三部曲】——进阶篇
(2)选择 influxdb 数据源

【Docker学习三部曲】——进阶篇
【Docker学习三部曲】——进阶篇
【Docker学习三部曲】——进阶篇
【Docker学习三部曲】——进阶篇
(3)配置 panel 面板

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

到这里 cAdvisor+InfluxDB+Grafana 容器监控系统就部署完成了文章来源地址https://www.toymoban.com/news/detail-424609.html

到了这里,关于【Docker学习三部曲】——进阶篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JavaCV人脸识别三部曲之二:训练

    这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本文是《JavaCV人脸识别三部曲》的第二篇,前文《视频中的人脸保存为图片》咱们借助摄像头为两位群众演员生成大量人脸照片,如下图,群众演员A的照片保存在 E:temp20211218\\001 man ,B的照片保存

    2024年02月11日
    浏览(34)
  • Java版人脸跟踪三部曲之三:编码实战

    这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 作为《Java版人脸跟踪三部曲》系列的终篇,本文会与大家一起写出完整的人脸跟踪应用代码 前文《开发设计》中,已经对人脸跟踪的核心技术、应用主流程、异常处理等方方面面做了详细设计,建

    2024年02月12日
    浏览(35)
  • JavaCV人脸识别三部曲之三:识别和预览

    这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 《视频中的人脸保存为图片》 《训练》 《识别和预览》 作为《JavaCV人脸识别三部曲》的终篇,今天咱们要开发一个实用的功能:有人出现在摄像头中时,应用程序在预览窗口标注出此人的身份,效

    2024年02月11日
    浏览(39)
  • Java版人脸跟踪三部曲之二:开发设计

    如何开发Java版人脸跟踪应用?本篇给出了设计大纲,并解释了相关的重要知识点 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇是《Java版人脸跟踪三部曲》系列的第二篇,前文体验了人脸跟踪的效果,想要编码实现这样的效果,咱们需要做

    2024年02月12日
    浏览(39)
  • vscode上的git三部曲+git pull操作

    git三部曲:git add .、git commit -m \\\'\\\'、git push,命令在连接远程仓库的本地仓库路径下的终端执行。 vscode上的可视化操作如下:  1、对仓库里的文件做更改,让仓库操作的地方有变化。 2、 点击+号,让文件进入缓存,此步骤相当于终端执行命令git add .  3、在这里输入信息并点击

    2024年02月11日
    浏览(39)
  • Go语言基准测试(benchmark)三部曲之一:基础篇

    这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos Go的标准库内置的testing框架提供了基准测试(benchmark)功能,可以用来验证本地方法在串行或者并行执行时的基准表现,帮助开发者了解代码的真实性能情况,例如一个方法执行一次的平均耗时,还能

    2024年02月06日
    浏览(48)
  • Go语言基准测试(benchmark)三部曲之三:提高篇

    这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos -《Go语言基准测试(benchmark)三部曲》已近尾声,经历了《基础篇》和《内存篇》的实战演练,相信您已熟练掌握了基准测试的常规操作以及各种参数的用法,现在可以学习一些进阶版的技能了,在面

    2024年02月06日
    浏览(41)
  • 【C++系列P4】‘类与对象‘-三部曲——[类](2/3)

     前言 大家好吖,欢迎来到 YY 滴 C++系列 ,热烈欢迎! 【 \\\'类与对象\\\'-三部曲】的大纲主要内容如下 : 如标题所示,本章是【 \\\'类与对象\\\'-三部曲】三章中的第二章节—— 类章节 ,主要内容如下: 目录 一.类 1.类的组成与计算类的大小(含结构体内存对齐规则) 二. 空类的大小

    2024年02月08日
    浏览(40)
  • 数据结构:堆的三部曲(二)top K问题

    top k问题解决的是获取前几个最值的问题。 我们知道 堆的功能主要是选数,选出最大值或者最小值 。那么我们每次获取堆顶元素后,再将剩余元素调整成堆,就可以选出次大的数,如果我们只想要前k个最大值或者最小值,就只需要获取堆顶元素k次,调整k次。比如王者荣耀

    2024年02月02日
    浏览(40)
  • 【C++系列P3】‘类与对象‘-三部曲——[基础知识](1/3)

    前言 大家好吖,欢迎来到 YY 滴 C++系列 ,热烈欢迎! 【 \\\'类与对象\\\'-三部曲 】的大纲主要内容如下 : 如标题所示,本章是【 \\\'类与对象\\\'-三部曲 】三章中的第 一 章节—— 基础知识章节 ,主要内容如下: 目录 一. This指针 1.编译器对This指针的处理本质——不允许修改this,但

    2024年02月11日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包