访问 Docker Swarm 集群上 Couchbase 容器的 IP 地址
Access IP address of Couchbase container on Docker Swarm cluster
正在尝试 运行 Docker Swarm 集群上的 Couchbase 集群。集群启动后,我想动态获取每个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
template function 访问映射(以及切片)值:
$ docker inspect --format '{{ index .NetworkSettings.Ports "8091/tcp" 0 "HostIp" }}'
但是请注意,这可能并不总是 return 您所期望的。如果容器配置为侦听 所有 主机接口,这将只是 return 0.0.0.0
。您可以查看 Docker 1.9 中引入的 networking feature,而不依赖于查找主机 IP 地址。
正在尝试 运行 Docker Swarm 集群上的 Couchbase 集群。集群启动后,我想动态获取每个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
template function 访问映射(以及切片)值:
$ docker inspect --format '{{ index .NetworkSettings.Ports "8091/tcp" 0 "HostIp" }}'
但是请注意,这可能并不总是 return 您所期望的。如果容器配置为侦听 所有 主机接口,这将只是 return 0.0.0.0
。您可以查看 Docker 1.9 中引入的 networking feature,而不依赖于查找主机 IP 地址。