嘗試在 Docker Swarm 集群上運(yùn)行 Couchbase 集群。集群啟動后,我想動態(tài)獲取每個Couchbase實(shí)例的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 地址會出現(xiàn)錯誤:docker inspect --format '{{ .NetworkSettings.Ports.8091/tcp[0].HostIp }}' 922755302fefTemplate parsing error: template: :1: unexpected ".8091" in operand; missing space?訪問 IP 地址的正確格式是什么?
1 回答

Smart貓小萌
TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個贊
該屬性.NetworkSettings.Ports
是地圖,而不是結(jié)構(gòu)。您可以使用index
模板函數(shù)訪問地圖(以及切片)值:
$ docker inspect --format '{{ index .NetworkSettings.Ports "8091/tcp" 0 "HostIp" }}'
但是請注意,這可能并不總是返回您期望的結(jié)果。如果容器配置為偵聽所有主機(jī)接口,這將簡單地返回0.0.0.0
. 您可以查看Docker 1.9 為此引入的網(wǎng)絡(luò)功能,而無需依賴于查找主機(jī) IP 地址。
- 1 回答
- 0 關(guān)注
- 200 瀏覽
添加回答
舉報(bào)
0/150
提交
取消