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

Apollo Docker宿主机环境自动化配置:架构解析与最佳实践 容器化技术通过封装应用及其依赖,解决了软件部署中的环境一致性问题,其核心原理是利用操作系统级虚拟化实现资源隔离。在自动驾驶等复杂系统工程中,这一技术价值尤为凸显,它能确保算法模块在开发、测试与生产环境中行为一致。Docker作为主流容器引擎,结合NVIDIA Container Toolkit可实现GPU加速资源的容器化访问。本文聚焦于Apollo自动驾驶平台中专门负责宿主机环境准备的`apollo_docker_setup_host`模块,深入剖析其通过自动化脚本处理Docker部署、GPU支持集成、用户 阅读详情

使用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 read -r task_id node_id task_name; do
    # 获取任务IP地址和容器ID
    task_info=$(docker inspect --format "{{range .NetworksAttachments}}{{.Addresses}}{{end}} {{.Status.ContainerStatus.ContainerID}}" "$task_id")
    task_ip=$(echo "$task_info" | awk '{print $1}')
    container_id=$(echo "$task_info" | awk '{print $2}' | cut -c 1-6)

    # 获取节点IP地址
    node_ip=$(docker node inspect --format '{{.Status.Addr}}' "$node_id")

    # 打印服务名称、任务ID、容器ID、任务IP、节点IP
    printf "%-30s %-20s %-20s %-20s %-20s\n" "$task_name" "$task_id" "$container_id" "$task_ip" "$node_ip"
  done
done

使用说明

  1. 将脚本保存为 get_docker_info.sh 文件:
 cat << 'EOF' > get_docker_info.sh
 #!/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 read -r task_id node_id task_name; do
     # 获取任务IP地址和容器ID
     task_info=$(docker inspect --format "{{range .NetworksAttachments}}{{.Addresses}}{{end}} {{.Status.ContainerStatus.ContainerID}}" "$task_id")
     task_ip=$(echo "$task_info" | awk '{print $1}')
     container_id=$(echo "$task_info" | awk '{print $2}' | cut -c 1-6)
 
     # 获取节点IP地址
     node_ip=$(docker node inspect --format '{{.Status.Addr}}' "$node_id")
 
     # 打印服务名称、任务ID、容器ID、任务IP、节点IP
     printf "%-30s %-20s %-20s %-20s %-20s\n" "$task_name" "$task_id" "$container_id" "$task_ip" "$node_ip"
   done
 done
 EOF
  1. 赋予脚本执行权限:

    chmod +x get_docker_info.sh
    
  2. 运行脚本:

    ./get_docker_info.sh
    

输出示例

脚本运行后,将输出如下格式的表格:

Service              Task ID           Container ID             Task IP                          Node IP            
service1             abc123            eee123                     10.0.0.1/24                    192.168.1.1        
service2             def456            ddd456                     10.0.0.2/24                    192.168.1.2        
...

总结

通过这个Bash脚本,你可以轻松地获取和管理Docker服务及其任务的IP地址信息,并且能够快速查找任务所在宿主机的IP地址。这一自动化解决方案能够显著提高工作效率,减少手动操作的错误风险。

相关关键词

  • Docker服务IP地址
  • Docker任务IP地址
  • Docker自动化脚本
  • 获取Docker节点IP
  • Docker运维管理
  • Bash脚本教程
  • 容器IP地址管理

希望这个脚本能够帮助到你,使你的Docker管理工作更加高效和便捷。如果你有任何问题或建议,请随时留言。

Play with Docker:浏览器中真实运行Docker容器的免安装实验平台 Docker 是现代云原生应用的核心运行时环境,其核心原理在于基于 Linux Namespace 和 Cgroups 的进程隔离与资源限制。掌握 Docker 不仅需要理解镜像分层、容器生命周期等概念,更依赖可交互的实践验证——而传统本地环境搭建常因系统差异、权限冲突和网络策略成为学习第一道门槛。Play with Docker(PWD)正是为此设计的零配置在线实验平台,它基于 Docker-in-Docker 架构,在浏览器中提供完整、隔离、实时响应的容器终端,支持 docker build、docke 阅读详情

相关推荐

Docker容器固定IP实战:自定义Bridge网络配置与多容器通信解决方案

在容器化部署中,网络通信的稳定性是保障微服务架构可靠性的基础。Docker默认的动态IP分配机制虽然简化了部署,但在需要稳定网络标识的场景下,却可能引发服务调用链断裂、配置频繁变更等问题。其核心原理在于Docker的网络驱动模型,特别是bridge网络模式下,容器IP的动态性。为了解决这一痛点,固定容器IP的技术价值在于为容器提供静态网络身份,这是实现精准网络策略控制、服务稳定发现以及复杂测试环境模拟的基石。通过创建自定义Bridge网络并指定IP,开发者可以在隔离的网络环境中为每个容器分配固定地址,确保重

weixin_33798152的博客 593

查看docker服务的IP地址_如何查看docker网路驱动器ip,2024年最新Linux运维基础开发入门

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

2401_83974064的博客 2300

Docker 2375端口安全风险深度解析与加固实战指南

Docker Remote API作为容器化技术中实现远程管理的关键接口,其设计初衷是为CI/CD流水线和集群管理提供便利。然而,该API在默认配置下缺乏身份验证与加密机制,这一安全缺陷构成了严重的技术风险。从原理上看,攻击者可通过未授权访问直接调用API,并利用容器挂载宿主机文件系统的特性,实现从容器逃逸到宿主机提权。这种漏洞的技术价值在于揭示了基础设施即代码环境中配置安全的重要性,其应用场景广泛存在于开发、测试及生产环境的Docker部署中。通过分析Docker 2375端口暴露的远程管理漏洞,结合SS

weixin_30435261的博客 457

在 Docker Swarm 中,如何找到哪个节点 IP

【代码】在 Docker Swarm 中,如何找到哪个节点 IP。

韶华易逝,容颜易老,珍惜当下........... 1099

Ubuntu 16.04 + Docker 安全审计实战:Docker Bench for Security 精准加固指南

Docker 安全审计是容器化生产环境的基础保障,其核心在于配置合规性验证而非漏洞扫描。基于 CIS Docker Benchmark 的 Docker Bench for Security 工具,以 Bash 脚本形式实现轻量、可靠、低依赖的配置检查,特别适配 Ubuntu 16.04 这类 EOL 但仍在工业场景广泛使用的系统。它深度解析 daemon.json 配置、校验 auditd 日志规则覆盖、验证 docker.sock 权限与 systemd 服务状态,将抽象安全标准转化为可执行的工程动作。

weixin_30340617的博客 402

Docker微服务架构中etcd服务发现与配置管理实战

在容器化微服务架构中,服务发现与分布式配置是解决动态扩缩容、跨主机通信和配置热更新的核心能力。其原理基于注册中心(如etcd)实现服务实例的自动注册、健康心跳与DNS式寻址,并通过强一致性键值存储支撑配置的实时监听与原子切换。技术价值在于解耦容器生命周期与网络依赖,显著提升系统弹性与运维效率。典型应用场景包括Docker Compose多机部署、轻量级Swarm替代方案及遗留系统渐进式上云。本文聚焦etcd在Docker生态中的生产级落地,涵盖高可用集群搭建、服务注册契约设计、配置热更新可靠性保障及安全加固

weixin_30721077的博客 297

shell获取本地ip

shell获取本地ip

iuRzz's blog 661

Docker Remote API未授权访问漏洞:从原理到实战攻防

容器技术通过封装应用及其依赖,实现了环境的一致性与快速部署,其核心在于客户端与守护进程的通信机制。Docker Remote API作为守护进程对外提供管理功能的接口,若配置不当暴露于网络且未启用认证,便会产生严重的安全漏洞。该漏洞的原理在于攻击者能够绕过认证直接与守护进程交互,其技术价值在于揭示了基础设施即代码环境中配置安全的重要性。攻击者可利用此漏洞进行容器信息窃取、部署恶意负载,并通过创建特权容器挂载宿主机目录实现容器逃逸,最终完全控制宿主机。在云原生和微服务架构广泛应用的今天,此类配置错误常出现在开

a1311010193的博客 480

Docker学习笔记--DockerSwarm

文章目录容器编排Docker Swarm创建一个三个节点的swarm集群案例在Swarm集群里通过service部署wordpress集群服务间通信之Routing MeshDocker Stack部署wordpressDocker Secrets Management什么是Secret?Secret ManagementService更新 容器编排Docker Swarm 创建一个三个节点的swarm集群 创建三台linux虚拟机并将docker装好 进入其中一台创建manager节点 创建主(m

zhangliewena的博客 391

Docker网络模型深度解析:从bridge到overlay的生产级实践

Docker网络是容器化架构中连接应用与基础设施的核心通信层,其本质是一套基于Linux命名空间、veth pair、网桥和iptables构建的可编程网络栈。理解bridge、host、none与overlay四大驱动的内核原理,是解决跨容器、跨宿主机通信问题的前提;而MTU一致性、iptables转发策略、DNS解析机制等细节,直接决定微服务调用的稳定性与性能。在Kubernetes生态中,Flannel、Weave等CNI插件延伸了Docker原生网络能力,支撑服务发现、加密通信与网络策略落地。本文聚

weixin_30520015的博客 315

Docker容器回顾之运维篇

背景 接上一篇《Docker复习之部署篇》,本文继续对Docker之日常维护常用操作做回顾总结。 操作命令 2.1 Docker 容器查看 首先,管理员对docker做日常维护,需要了解现有环境有多少docker实例,并连接进入docker实例虚拟机进行对应的管理维护; 我们执行 docker ps 命令来查看容器名称:docker ps -a或docker ps //显示当前正在运行的容器,输出如下: 参数概览: 示例: 1)显示最后被创建的容器:docker ps -l //相当于 dock

企业实战系列集 ●●● https://ximenjianxue.blog.youkuaiyun.com 2879

linux bash 获取本机ip,linux bash 获取 国内常见网站的IP列表

wget -O- 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | awk -F\| '/CN\|ipv4/ { printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > /etc/ignore.listwget 从网上下载一个文件,网址:http://ftp.apnic.ne...

weixin_39742392的博客 313

从原理到实战:ARS548 4D毫米波雷达数据处理与多模态融合全解析

本文深入解析了4D毫米波雷达ARS548的工作原理与数据处理全流程。从FMCW测距测速、MIMO虚拟天线阵列到点云生成的三步FFT处理,提供了详尽的Python代码实现。文章进一步探讨了与激光雷达、相机的多模态时空对齐与融合策略,并指导如何构建用于自动驾驶感知训练的多模态标注数据集,为相关算法工程师提供了从理论到实践的完整指南。

weixin_29161719的博客 364

Docker 学习:术语、使用、Compose、Swarm

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

freeking101的博客 6167

从零开始:Vivado中自定义串口通信IP核的完整实现

本文详细介绍了在Vivado中从零开始实现自定义串口通信IP核的完整流程,包括Verilog核心代码编写、仿真验证、IP核封装与参数化配置技巧。通过AXI-Lite总线实现动态配置,提升FPGA开发效率,适用于各种嵌入式系统通信需求。

weixin_29274969的博客 324

Jmeter压测报告

账户分析压测报告 一、测试内容 本次测试是针对账户分析进行的压力测试,在账户分析查询接口中,只对用户资产查询接口进行压力测试,其中不包含用户签名校验功能。 二、测试方法 本次采用apache的开源测试工具jmeter,采用本地动态拼装请求数据并通过http协议GET方式发送每日盈亏查询请求。并采用1000个用户账号测试访问情况。...

qq_31108731的博客 6624

Docker容器IP地址查看全攻略:从入门到精通,老工程师都不一定知道的细节

掌握如何查看 docker 容器内部的 ip 地址,轻松定位容器网络配置。适用于多容器通信、服务调试等场景,涵盖docker inspect、exec命令及适用细节,方法高效精准。运维和开发必备技巧,值得收藏。

PoliSeed的博客 874

在 Ansys CFX Pre 中配置 RGP 表的分步指南

掌握在 Ansys CFX Pre 中设置 RGP 表的技巧,以优化仿真精度和效率。

jkh920184196的博客 1664

Docker容器和镜像教程【详细版】

Docker容器和镜像教程【详细版】

IT菜鸟 4985

ABAP动态填充Word模板:基于cl_docx_document的XML替换方案

本文详细介绍了ABAP中基于cl_docx_document类的动态Word模板填充方案。该方案通过直接操作DOCX文件的XML核心,完美解决了传统OLE/DOI方法在格式保真、性能和后台运行方面的痛点,是实现复杂、批量Word文档生成的优雅解决方案。

gpt4scribbler的博客 525

【ComfyUI专栏】安装Triton组件

Triton是一款支持大模型推理的深度学习加速组件,最初仅支持Linux平台,现已通过开源社区适配Windows系统。针对SageAttention的安装,建议使用3.2.0Post10版本(该版本提供封装好的安装包,更高版本仅有源码)。用户可通过GitHub获取安装资源,或直接使用pip命令"pip install triton-windows"进行安装。安装时需注意:1)在虚拟环境中操作;2)使用管理员权限。相关资源链接已在文中提供。

技术与管理的平衡木- 1858

Docker Compose 容器编排实战:从多服务定义到生产环境部署

容器化技术通过将应用及其依赖打包成标准单元,实现了环境一致性与快速部署。其核心原理在于利用操作系统级虚拟化,实现资源隔离与高效利用。在微服务架构中,多容器应用的编排成为关键挑战,这正是 Docker Compose 的技术价值所在。它通过声明式的 YAML 配置文件,统一管理多个关联容器的生命周期、网络与存储,将复杂的 docker run 命令集简化为单一指令。在开发、测试及单机生产等应用场景中,Docker Compose 能显著提升从服务定义、依赖管理到一键启停的运维效率。本文以 docker-com

weixin_34162228的博客 469

Python爬虫实战:使用最新技术抓取采购网招标公告信息

本文将详细介绍如何使用Python最新爬虫技术构建一个高效的采购网招标公告信息抓取系统。我们将从爬虫基础概念讲起,逐步深入到高级技巧,包括异步处理、反爬虫对策、数据解析与存储等,并提供完整的代码实现。本文旨在为读者提供一套完整的网络数据采集解决方案,适用于各类政府采购平台和商业招标网站。网络爬虫(Web Crawler)是一种自动抓取互联网信息的程序或脚本,它们按照一定的规则,自动地浏览万维网并提取所需数据。在现代商业环境中,爬虫技术广泛应用于价格监控、竞争情报收集、市场研究等领域。

2201_76125261的博客 1620

Weave Scope容器监控工具:从原理到部署的实战指南

在容器化与微服务架构成为主流的今天,如何有效监控动态、复杂的容器环境是运维和开发团队面临的核心挑战。容器监控的核心原理在于实时采集容器及其内部进程的资源使用数据(如CPU、内存)和网络拓扑信息,并通过可视化界面进行展示,从而帮助工程师快速理解系统状态、定位性能瓶颈。其技术价值在于将传统的指标监控与拓扑发现、进程级洞察相结合,极大地提升了在分布式、高动态环境下的排障效率与系统可观测性。典型的应用场景包括微服务依赖关系梳理、容器内异常进程定位、以及跨主机网络连接分析等。本文以Weave Scope为例,深入解析

weixin_34375251的博客 369

华为流程L1-L6业务流程深度细化到可执行【附全文阅读】

该文档主要介绍了华为业务流程的深度细化及相关内容,包括流程框架、建模方法、流程模块描述、流程图建模等,旨在帮助企业构建有效的流程体系,实现战略目标。

cdfunlove的博客 4001

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Docker容器化实战:从核心概念到CI/CD的完整开发效率提升指南

容器技术通过将应用及其完整的运行时环境打包成标准化的轻量级单元,实现了环境的一致性与隔离性,其核心原理基于操作系统层的虚拟化,利用命名空间和控制组实现资源隔离。这项技术的核心价值在于彻底解决了“开发环境与生产环境不一致”的经典难题,为软件交付提供了可移植、可复现的标准化方案。在工程实践中,容器化极大地简化了从开发、测试到部署的整个流程,是实现DevOps和自动化CI/CD流水线的关键技术基石。通过将应用打包为镜像,结合Docker Compose进行多服务编排,开发者可以快速构建、测试和部署复杂的微服务应用

weixin_34348174的博客 574

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

上一篇: gcc 编译c文件为exe 太大了,怎么变小。
下一篇: AI 生成内容秒变标准公文!基于 Pandoc + WPS JS 脚本的自动化工作流
topcss
博客等级 码龄18年 24粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值