Swarm:从服务中获取节点 IP 和容器 IP

pie*_*r92 5 docker docker-swarm

我如何从创建的服务中获取节点 ip 和容器 ip(在管理器和工作节点上运行)?我想检查这个以研究 docker swarm 引擎的循环负载平衡并开发新的负载平衡。

Nab*_*ikh 7

要获取节点 IP 地址,您可以使用以下命令:

docker node inspect self --format '{{ .Status.Addr }}'

要获取服务IP地址,只需在最后添加service-id,例如:

docker node inspect self --format '{{ .Status.Addr }}' service-id

要获取容器 IP 地址,请使用:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container-id


emo*_*t01 1

我假设您的意思是使用 docker 命令在终端上获取所有这些信息,以进行编程语言集成检查docker-py

集装箱

要获取经理和工人信息,您可以使用 docker node 命令:

docker node ls
Run Code Online (Sandbox Code Playgroud)

为您提供每个节点的详细信息,例如:

ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS
j74jxqb4wz38l2odl2seiiuzh *   db-cluster-1        Ready               Active              Leader
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,它还包括一个“经理状态”字段

集群节点

docker service ps <SERVICE-NAME>
Run Code Online (Sandbox Code Playgroud)

为您提供每个服务节点的列表、其 ID 和状态,例如:

ID                  NAME                     IMAGE                         NODE                DESIRED STATE       CURRENT STATE         ERROR                       PORTS
ypd65x4i06nn        db-cluster.1       severalnines/mariadb:latest   db-cluster-1        Running             Running 2 hours ago                               
278rdv7m4015        db-cluster.2       severalnines/mariadb:latest   db-cluster-1        Running             Running 2 hours ago                               
z9zr6xgnyuob        db-cluster.3       severalnines/mariadb:latest   db-cluster-1        Running             Running 2 hours ago
Run Code Online (Sandbox Code Playgroud)

然后您可以使用检查来获取任何对象的更详细信息,例如:

docker inspect ypd65x4i06nn
Run Code Online (Sandbox Code Playgroud)

检查 NetworksAttachments 部分以获取网络详细信息