我正在尝试远程向 Docker API 发出请求。
我在虚拟机上运行了 docker 引擎,并且正在从 docker 容器发出请求。
首先,我这样做是为了让 Docker 守护进程监听特定的 IP 和端口:
edit /lib/systemd/system/docker.service
ExecStart=/usr/bin/docker -H fd:// -H=tcp://0.0.0.0:5555
systemctl daemon-reload
sudo service docker restart
我配置为在 0.0.0.0 上侦听,因此可以通过任何 IPv4 地址访问它。
当我通过主机上的 curl 测试它时,它工作正常。例如:curl localhost:5555/services
但是,我的目标是从容器发出请求。以下是我在 go 程序中构建 docker 客户端的方式:
cli, err := client.NewClientWithOpts(
client.WithHost("tcp://192.168.56.1:5555"),
)
if err != nil {
panic(err)
}
networkFilters := filters.NewArgs()
networkFilters.Add("driver", "overlay")
networks, err := cli.NetworkList(context.Background(), types.NetworkListOptions{Filters: networkFilters})
if err != nil {
panic(err)
}
我遇到的错误:
http: panic serving 10.255.0.2:39632: error during connect: Get http://192.168.56.1:5555/v1.40/networks?filters=%7B%22driver%22%3A%7B%22overlay%22%3Atrue%7D%7D: read tcp 172.18.0.3:36126->192.168.56.1:5555: read: connection reset by peer
有任何想法吗?谢谢