我想知道是否可以从管理器节点检查在工作节点上运行的容器?容器是通过docker service create创建的。从管理器节点,我可以获得任务的服务ID(通过docker service ps甚至容器id(通过docker inspect)我的最终目标是能够找到容器的ip地址。任何帮助都将非常感谢!
其他信息:
Docker版本1.12.1
操作系统:CentOS Linxus 7
答案 0 :(得分:1)
目前还没有直接的方法可以解决这个问题。你应该忘记处理ip并依赖于使用dns名称(服务名称)进行解析。
如果你真的想要,你可以创建一个执行以下操作的脚本。
获取服务的任务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
该服务在不同节点上运行两个任务。
获取每项任务的容器ID
我只是在这里完成一项任务
docker inspect --format "{{.Status.ContainerStatus.ContainerID}}" 31cb7clxw3lfi1y6ko12edjys
将返回任务的容器ID
13a24dff4bd1f9351938b09d32db451406ed64b5f890f66f18fec12c611e9175
获取Container IP
docker $(docker-machine config vmw-node03) inspect --format "{{.NetworkSettings.IPAddress}}" 13a24dff4bd1f9351938b09d32db451406ed64b5f890f66f18fec12c611e9175
返回它
172.17.0.2