はじめに
dockerコンテナでgoのプログラムを動かしていると、コンテナのIPをどのように取得すればよいか困ったのでその対処を紹介。
コード
package main import ( "fmt" "net" ) func main() { netInterfaceAddresses, _ := net.InterfaceAddrs() for _, netInterfaceAddress := range netInterfaceAddresses { networkIp, ok := netInterfaceAddress.(*net.IPNet) if ok && !networkIp.IP.IsLoopback() && networkIp.IP.To4() != nil { ip := networkIp.IP.String() fmt.Println("Resolved Host IP: " + ip) } } }
解説
至ってシンプル。 “` net.InterfaceAddrs() “` でIPを取得することが可能だ。
127.0.0.1 で表現できない時など、テストコードなどで活躍しそう。