我有一个码头群。我用了一张Elassandra码头的图像。现在,我希望找到种子节点的停靠容器的IP地址:
以下是我在人群中的服务:
码头服务 ID名 yjehoql7l976 elassandra_seed
我希望按照Elassandra_seed节点的名称查找容器的IP地址,以便在我的其他停靠器撰写文件中使用。这有可能吗?
发布于 2019-10-27 06:11:38
可以找到IP地址,但请记住,每次服务重新启动时,IP地址都会更改。让我们继续寻找ip地址。
docker service ps stack_service。检查节点列以找到节点的名称。docker network ls。通常,堆栈的网络的名称类似于这个$stackname_network。获取网络的ID。docker inspect $networkid来描述网络。这将显示服务名称及其分配的IP地址。发布于 2022-04-29 13:18:15
按照@rodrigo-loza的想法,我所做的是:
docker service ps获取运行在我群中的服务列表。添加筛选条件,使之仅具有实际运行的条件(--filter desired-state=running),并将输出格式化为仅显示服务ID和Namedocker inspect并获取所需的地址。这可以使用格式(查看有关格式命令和日志输出的文档以获得有关语法的更多细节)。有点像--format '{{range $conf := (index (index .NetworksAttachments))}}{{.Addresses}}{{end}}'将所有内容放在bash中应该如下所示:
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]https://stackoverflow.com/questions/58493501
复制相似问题