如何连接到docker / engine-api中的远程套接字?

我想检索远程机器的所有docker的图像,所以我使用docker / engine-api: https : //github.com/docker/engine-api

我成功地使用以下代码返回本地机器的泊坞窗图像:

package main import ( "fmt" "github.com/docker/engine-api/client" "github.com/docker/engine-api/types" "golang.org/x/net/context" ) func main() { defaultHeaders := map[string]string{"User-Agent": "engine-api-cli-1.0"} cli, err := client.NewClient("unix:///var/run/docker.sock", "v1.22", nil, defaultHeaders) if err != nil { panic(err) } options := types.ContainerListOptions{All: true} containers, err := cli.ContainerList(context.Background(), options) if err != nil { panic(err) } for _, c := range containers { fmt.Println(c.ID) } } 

但现在是否有人知道如何根据地址,用户名和密码来检索远程机器的docker图像

这种Unix套接字只能通过在同一台机器上的proc进行访问。

要从远程机器访问你的docker,你需要运行一个特殊的configuration来运行ip。

这个configuration是DOCKER_OPTS="-H <ip_address>:<port>" (或-H 0.0.0.0:<port>如果你想让它监听所有的接口),这取决于你运行的docker的版本必须configuration它。

在这里你可以find更多关于在哪里configurationDOCKER_OPTS取决于操作系统版本的信息。

希望能帮助到你!

更好的解决scheme是使用github中的go-dockerclient ,它提供了对 docker networkingAPI的支持,这是对libnetwork远程API的简单传递。