How to get Docker Container in Golang | Container ID and IP Address
- Admin
- Mar 10, 2024
- Golang-examples
This tutorial explains guidance on getting a container’s IP address in Golang.
- Utilize the
osmodule’sHostname()function in Golang.os.Hostname()returns the hostname if valid; otherwise, it returns an error. - Identify the Docker
IDandnameof a container using Golang.
Containers are generated through the Docker tool, and typically, Docker commands are used to retrieve container details. However, there are scenarios where it becomes necessary to write Golang code for accessing container details.
Golang Get Container IP Address example
Inside a container, write a Golang program. The os package offers the Hostname() method, which returns a string and an error.
func Hostname() (name string, err error)
the string contains the hostname of a container for successful execution. else, it returns an error.
package main
import (
"os"
)
func main() {
containerHostname, err := os.Hostname()
println(containerHostname)
println(err)
}
Golang Get Container ID and Image details
With the Docker command using the ps option, it lists container details.
Docker provides a client API for golang🔗.
To retrieve container metadata details, follow the steps below:
- Create a
Clientobject using eitherNewClientWithOpts(client.FromEnv)orNewClient()method - Obtain the Containers object using the client’s
ContainerList()method. - The container object contains all container objects.
- Iterate through each object using a
rangeloop. - Print the container ID and image. Here is an example in Golang to retrieve the container ID and image.
package main
import (
"context"
"fmt"
"github.com/docker/docker/api/types"
"github.com/docker/docker/client"
)
func main() {
client, err := client.NewClientWithOpts(client.FromEnv)
if err != nil {
panic(err)
}
containers, err := client.ContainerList(context.Background(), types.ContainerListOptions{})
if err != nil {
panic(err)
}
for _, container := range containers {
fmt.Printf("%s %s", container.ID[:10], container.Image)
}
}
Conclusion
In this tutorial, you have learned how to get the container ID and image details of a container in Golang.
