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

Swarm mode: Inspect worker node's container on manager node

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

附加信息:

Docker 版本 1.12.1

OS: 分OS Linxus 7

目前还没有直接的方法来获得它。你应该忘记处理 ip 并依赖于使用 dns 名称(服务名称)进行解析。

如果您确实需要,您可以创建一个执行以下操作的脚本。

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

    docker service ps myservice
    

    那将 return 类似于

    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
    

    这将 return 任务的容器 ID

    13a24dff4bd1f9351938b09d32db451406ed64b5f890f66f18fec12c611e9175
    
  3. 获取容器IP

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

    return是哪个

    172.17.0.2