【问题标题】:Access IP address of Couchbase container on Docker Swarm cluster访问 Docker Swarm 集群上 Couchbase 容器的 IP 地址
【发布时间】:2016-01-09 06:13:56
【问题描述】:

尝试在 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 地址的正确格式是什么?

【问题讨论】:

    标签: go docker couchbase


    【解决方案1】:

    .NetworkSettings.Ports 属性是一个映射,而不是一个结构。您可以使用index template function 访问地图(以及切片)值:

    $ docker inspect --format '{{ index .NetworkSettings.Ports "8091/tcp" 0 "HostIp" }}'
    

    但是请注意,这可能并不总是返回您期望的结果。如果容器配置为侦听所有主机接口,这将简单地返回0.0.0.0。您可以查看 Docker 1.9 为此引入的networking feature,而无需依赖查找主机 IP 地址。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-01
      • 1970-01-01
      • 2021-04-07
      • 1970-01-01
      • 1970-01-01
      • 2020-09-25
      • 1970-01-01
      相关资源
      最近更新 更多