在Docker Swarm集群上访问Couchbase容器的IP地址
尝试在Docker Swarm集群上运行Couchbase集群。 集群启动后,我想dynamic获取每个Couchbase实例的IP地址。 docker inspect
显示:
"NetworkSettings": { "Bridge": "", "SandboxID": "325807d55b552be3fe5b44b4d975c2486b3a56b320aa56fa0367e42348b82d64", "HairpinMode": false, "LinkLocalIPv6Address": "", "LinkLocalIPv6PrefixLen": 0, "Ports": { "11207/tcp": null, "11210/tcp": [ { "HostIp": "192.168.99.101", "HostPort": "11210" } ],
试图访问IP地址给出了错误:
docker inspect --format '{{ .NetworkSettings.Ports.8091/tcp[0].HostIp }}' 922755302fef Template parsing error: template: :1: unexpected ".8091" in operand; missing space?
访问IP地址的格式是什么?
属性.NetworkSettings.Ports
是一个映射,而不是一个结构。 您可以使用index
模板函数来访问地图(以及切片)值:
$ docker inspect --format '{{ index .NetworkSettings.Ports "8091/tcp" 0 "HostIp" }}'
但请注意,这可能并不总是返回您所期望的。 如果容器被configuration为侦听所有主机接口,则这将简单地返回0.0.0.0
。 您可以查看Docker 1.9中引入的networkingfunction ,无需查看主机IP地址。