Swarm模式:检查管理器节点上的工作节点的容器

时间:2016-08-30 22:23:49

标签: docker docker-swarm

我想知道是否可以从管理器节点检查在工作节点上运行的容器?容器是通过docker service create创建的。从管理器节点,我可以获得任务的服务ID(通过docker service ps甚至容器id(通过docker inspect)我的最终目标是能够找到容器的ip地址。任何帮助都将非常感谢!

其他信息:

Docker版本1.12.1

操作系统:CentOS Linxus 7

1 个答案:

答案 0 :(得分:1)

目前还没有直接的方法可以解决这个问题。你应该忘记处理ip并依赖于使用dns名称(服务名称)进行解析。

如果你真的想要,你可以创建一个执行以下操作的脚本。

  1. 获取服务的任务ID及其节点名称。

    docker service ps myservice
    

    这将返回类似

    的内容
    ID                         NAME   IMAGE       NODE        DESIRED STATE  CURRENT STATE           ERROR
    31cb7clxw3lfi1y6ko12edjys  foo.1  alpine:3.4  vmw-node03  Running        Running 30 minutes ago  
    9gkzs118txbc8a8gvla3bildq  foo.2  alpine:3.4  vmw-node01  Running        Running 30 minutes ago
    

    该服务在不同节点上运行两个任务。

  2. 获取每项任务的容器ID

    我只是在这里完成一项任务

    docker inspect --format "{{.Status.ContainerStatus.ContainerID}}" 31cb7clxw3lfi1y6ko12edjys
    

    将返回任务的容器ID

    13a24dff4bd1f9351938b09d32db451406ed64b5f890f66f18fec12c611e9175
    
  3. 获取Container IP

    docker $(docker-machine config vmw-node03) inspect --format "{{.NetworkSettings.IPAddress}}" 13a24dff4bd1f9351938b09d32db451406ed64b5f890f66f18fec12c611e9175 
    

    返回它

    172.17.0.2