当前位置: 首页 > article >正文

[Docker-显示所有容器IP] 显示docker-compose.yml中所有容器IP的方法

本文由Markdown语法编辑器编辑完成。

1. 需求背景:

最近在启动一个服务时,突然发现它的一个接口,被另一个服务ip频繁的请求。
按理说,之前设置的是,每隔1分钟请求一次接口。但从日志来看,则是1秒钟请求一次,明显是不太正常的。
但是,我需要定位一下,这个ip对应的是哪个服务,因为有可能有多个服务,来请求这个接口。

因此,需求的背景就是,如何根据docker服务日志中展示的ip, 快速地查找出,它是docker-compose.yml中的哪个服务。
在这里插入图片描述

2. 解决方案:

2.1 docker inspect

如果一个docker-compose.yml里面的服务数量比较少,我们是可以通过 docker inspect的指令,来查看某个服务被分配的ip地址是多少的。

这里举一个简单的例子,假设我有一个容器的名称, container-abc, 那么我如果想知道它在启动状态下分配的ipv4的地址,可以输入以下指令:

docker inspect {your-container-name} |grep -i ip

这样就可以查看到这个容器对应的服务的ip地址了。
如下示例:
在这里插入图片描述
可以看到,在截图中,
serverIP, 是宿主机的ip地址;
而IPAddress, 就是这个容器,在docker内部的ip地址。
docker-compose.yml中的服务之间,相互调用接口,就是通过这个ip来访问的。

2.2 组合docker的指令

第一种方法,仅限于当docker里面的服务数量较少时,可以使用。但是如果服务较多,肯定不是很现实。于是咨询了一下豆包,她给出了我一些建议。

在这里插入图片描述
通过将豆包给出的shell脚本,创建一个shell文件,比如:

touch docker-ip.sh
vim docker-ip.sh
# 获取容器 ID 列表
container_ids=$(docker-compose ps -q)

# 循环处理每个容器 ID
for container_id in $container_ids; do
    # 获取容器对应的服务名(通过解析容器名称来获取,容器名称包含服务名相关信息)
    service_name=$(docker inspect --format='{{.Name}}' $container_id | sed 's/^\///')
    # 获取容器的 IP 地址
    ip_address=$(docker inspect --format='{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $container_id)
    echo "服务名: $service_name,IP 地址: $ip_address"
done

将上述脚本写入 docker-ip.sh文件后,再次运行:

bash docker-ip.sh

就可以看到如下面的截图了,这里会显示每个服务对应的容器的名称,以及容器被分配的ip地址。

在这里插入图片描述

(完)


http://www.kler.cn/a/408541.html

相关文章:

  • “小浣熊家族AI办公助手”产品体验 — “人人都是数据分析师”
  • 图论最短路(floyed+ford)
  • logstash 解析数组格式json数据:split, json
  • 服务机器人三甲坎德拉:用智能化开启售后服务新篇章
  • 采用python3.12 +django5.1 结合 RabbitMQ 和发送邮件功能,实现一个简单的告警系统 前后端分离 vue-element
  • 小蒋聊技术:大数据驱动决策——技术落地与业务深度融合
  • 本地推流,服务器拉流全流程
  • SCP文件传输命令解析
  • C++:用红黑树封装map与set-1
  • 前端:JavaScript (学习笔记)【2】
  • 每日计划-1124
  • 嵌入式Linux——文件类型
  • 【jvm】java对象的访问定位
  • MATLAB的语音信号采集与处理分析
  • Puppeteer 和 Cheerio 在 Node.js 中的应用
  • React学习06- API扩展
  • 如何理解tensor中张量的维度
  • Web 毕设篇-适合小白、初级入门练手的 Spring Boot Web 毕业设计项目:电影院后台管理系统(前后端源码 + 数据库 sql 脚本)
  • 亚太杯数学建模C题思路与算法(2024)
  • 手机文件可以打印出来吗
  • linux 运维常用命令
  • 使用NAS开启无纸化办公,Docker部署开源文档管理系统『Paperless-ngx』
  • kali中信息收集的一些常用工具
  • hugo文章支持数学公式
  • 第三十章 TCP 客户端 服务器通信 - 作业服务器资源
  • 【c++篇】掌握动态内存的奥妙