Compose
1️⃣ 什么是 Docker-Compose ?
Docker Compose 是Docker官方提供的一个用于定义和运行多个容器的工具,它采用了声明式的语法定义单个应用程序的多个容器以及它们之间的相互关系和依赖关系。
使用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
以上示例中,定义了两个服务:web和db
- 服务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 面板
文章来源:https://www.toymoban.com/news/detail-424609.html
到这里 cAdvisor+InfluxDB+Grafana 容器监控系统就部署完成了文章来源地址https://www.toymoban.com/news/detail-424609.html
到了这里,关于【Docker学习三部曲】——进阶篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!