使用Bash/Shell脚本获取Docker Swarm 服务和任务副本的IP地址以及宿主机的IP地址

使用Bash/Shell脚本获取Docker Swarm 服务和任务副本的IP地址以及宿主机的IP地址

问题描述

在日常运维中,你可能会遇到以下几个问题:

  1. 如何快速获取每个Docker服务的任务的IP地址?
  2. 如何获取任务所在宿主机的IP地址?
  3. 在微服务中通过链路追踪skywalking找到问题,无法定位每个服务具体在哪里。

解决方案:Bash脚本

设计了一个Bash脚本,能够自动化完成上述任务。该脚本通过调用Docker命令,获取每个服务的任务ID和IP地址,同时也获取了任务所在宿主机的IP地址,并以表格形式输出结果。

脚本功能
  • 获取所有Docker服务名称
  • 获取每个服务的所有任务ID和任务所在节点ID
  • 获取每个任务的IP地址
  • 获取任务所在宿主机的IP地址
  • 以表格形式输出服务名称、任务ID、任务IP地址和宿主机IP地址
脚本代码

以下是完整的Bash脚本代码:

#!/bin/bash

# 打印表头
printf "%-30s %-20s %-20s %-20s %-20s\n" "Service" "Task ID" "Container ID" "Task IP" "Node IP"

# 获取所有服务名称
docker service ls --format '{
   {.Name}}' | while read -r service; do
  # 获取每个服务的所有任务
  docker service ps --format "{
   {.ID}} {
   {.Node}} {
   {.Name}}" "$service" | while rea

你可能感兴趣的:(bash,docker,tcp/ip)