首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在码头群中查找码头集装箱的IP地址

在码头群中查找码头集装箱的IP地址
EN

Stack Overflow用户
提问于 2019-10-21 20:14:21
回答 2查看 2.3K关注 0票数 0

我有一个码头群。我用了一张Elassandra码头的图像。现在,我希望找到种子节点的停靠容器的IP地址:

以下是我在人群中的服务:

码头服务 ID名 yjehoql7l976 elassandra_seed

我希望按照Elassandra_seed节点的名称查找容器的IP地址,以便在我的其他停靠器撰写文件中使用。这有可能吗?

EN

回答 2

Stack Overflow用户

发布于 2019-10-27 06:11:38

可以找到IP地址,但请记住,每次服务重新启动时,IP地址都会更改。让我们继续寻找ip地址。

  1. 查找运行服务的节点。运行docker service ps stack_service。检查节点列以找到节点的名称。
  2. 转到先前找到的worker节点。运行docker network ls。通常,堆栈的网络的名称类似于这个$stackname_network。获取网络的ID。
  3. 通过运行docker inspect $networkid来描述网络。这将显示服务名称及其分配的IP地址。
票数 1
EN

Stack Overflow用户

发布于 2022-04-29 13:18:15

按照@rodrigo-loza的想法,我所做的是:

  1. 使用docker service ps获取运行在我群中的服务列表。添加筛选条件,使之仅具有实际运行的条件(--filter desired-state=running),并将输出格式化为仅显示服务IDName
  2. 对于前面命令返回的每个服务,执行一个docker inspect并获取所需的地址。这可以使用格式(查看有关格式命令和日志输出的文档以获得有关语法的更多细节)。有点像--format '{{range $conf := (index (index .NetworksAttachments))}}{{.Addresses}}{{end}}'

将所有内容放在bash中应该如下所示:

代码语言:javascript
复制
docker service ps --filter desired-state=running \
        --format "{{.ID}} {{.Name}}" \
        elassandra_seed | while read id name ignore 
        do
            echo "$name $(docker inspect \
                      --format '{{range $conf := (index (index .NetworksAttachments))}}{{.Addresses}}{{end}}' \
                      $id)"
        done
elassandra_seed.1 [10.0.0.137/24][172.16.238.181/24]
elassandra_seed.2 [10.0.0.141/24][172.16.238.189/24]
elassandra_seed.3 [10.0.0.147/24][172.16.238.196/24]
elassandra_seed.4 [10.0.0.138/24][172.16.238.183/24]
elassandra_seed.5 [10.0.0.148/24][172.16.238.197/24]
elassandra_seed.6 [10.0.0.139/24][172.16.238.185/24]
elassandra_seed.7 [10.0.0.149/24][172.16.238.198/24]
elassandra_seed.8 [10.0.0.150/24][172.16.238.199/24]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58493501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档