繁体   English   中英

如何从同一网络中的 docker 容器中扫描 docker 容器 IP?

[英]How to scan docker containers IPs from a docker container that is in the same network?

我正在使用 docker-compose 运行多个 docker 容器,并且它们都在同一个网络中。

一旦容器启动并运行,我想通过 shell 脚本从其中一个容器访问所有其他容器,该脚本从 Z05B6053C41A21340AFD6FC3B150B 内部的容器网络中检索其他容器的所有 IP 地址。

我知道有一种方法可以使用容器名称获取 IP 地址,但是我正在运行带有 --scale 标志的 docker-compose 所以脚本不知道该网络中有多少容器,我很困惑,不知道该怎么做.

所有容器的基础镜像是 ubuntu:20.04

由于我现在找不到简单的方法,我使用nmapifconfig创建了一个脚本,它包括从 docker 机器之一获取 inet(以太网接口)的 IP 地址,然后使用 nmap 在该网络上查找:

#!/bin/bash

EI=$(/sbin/ifconfig eth0 | grep inet | awk '{ print $2}') # Get inet IP of eth0
IPS=($(nmap $EI/24 | grep dindood | awk '{ print $6}' | sed 's/.$//; s/^.//')) # Look for the nodes Ip addresses
NAMES=($(nmap $EI/24 | grep dindood | awk '{ print $5}' | cut -f1 -d".")) # Look for the nodes Containers names
echo "host ip=$EI"

for i in "${!IPS[@]}"; do #loop through IP addresses found

    echo "hostname= ${NAMES[$i]} | IP= ${IPS[$i]}"

done

output 对我来说看起来像这样:

host ip=192.168.160.3
hostname= my_project_container_2 | IP= 192.168.160.2
hostname= my_project_container_1 | IP= 192.168.160.4

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM