我正在尝试安装Docker客户端远程API库(https://github.com/spotify/docker-client)来进行一些图像搜索并检查图像数据(所有这些都在公共存储库中)。我已经下载,安装并运行了boot2docker VM。诸如" Docker之类的命令拉ubuntu"工作正常,但我想通过Java程序现在这样做。我使用Eclipse IDE Egit插件导入github项目,并从现有的Master分支创建了一个Maven / Java项目。源代码已完全导入,未报告错误。然后我尝试编写一个简单的测试:
final DockerClient docker = DefaultDockerClient.fromEnv().build();
//docker.pull("busybox");
List<ImageSearchResult> results = docker.searchImages("ubuntu");
for (ImageSearchResult res : results) {
System.out.println(res.getName());
}
但是,在Eclipse中运行代码时出现以下错误:
Exception in thread "main" com.spotify.docker.client.DockerException: java.util.concurrent.ExecutionException: javax.ws.rs.ProcessingException: org.apache.http.conn.HttpHostConnectException: Connect to localhost:2375 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect
at com.spotify.docker.client.DefaultDockerClient.propagate(DefaultDockerClient.java:1109)
at com.spotify.docker.client.DefaultDockerClient.request(DefaultDockerClient.java:1028)
at com.spotify.docker.client.DefaultDockerClient.searchImages(DefaultDockerClient.java:653)
at com.spotify.docker.client.main.Test.main(Test.java:28)
我尝试在该端口上设置apache服务器,但后来我得到了:
Exception in thread "main" com.spotify.docker.client.DockerRequestException: Request error: GET http://localhost:2375/v1.12/images/search?term=ubuntu: 404
at com.spotify.docker.client.DefaultDockerClient.propagate(DefaultDockerClient.java:1100)
at com.spotify.docker.client.DefaultDockerClient.request(DefaultDockerClient.java:1028)
at com.spotify.docker.client.DefaultDockerClient.searchImages(DefaultDockerClient.java:653)
at com.spotify.docker.client.main.Test.main(Test.java:28)
有谁能告诉我我应该在这里做什么来使我的搜索/拉电话工作?这是我第一次尝试使用Docker,我搜索了文档并搜索了问题,但无法找到有类似问题的人。
谢谢!
编辑:我通过预先构建的VM Boot2Docker在Windows 7中运行docker。也许在内部运行的Docker守护进程无法从VM外部的程序访问,例如Eclipse?
编辑:通过升级到v1.6而不是v1.5来解决它,这使得守护程序在Windows主机中可用。目前的问题是我的所有API调用都在返回&#34;服务器无法响应有效的HTTP响应&#34;
答案 0 :(得分:2)
我遇到了类似的问题,我设法通过以下方式解决了这个问题,以构建DockerClient:
final DockerClient docker = DefaultDockerClient.builder()
.uri(URI.create("unix:///var/run/docker.sock"))
.build();
我得到了同样的例外,但添加上面的URI部分帮助我解决了这个问题。 以下问题跟踪器提供了与上述类似问题以及如何解决问题的更好解释。
答案 1 :(得分:1)
Java程序基本上只有docker search
:它只能在存在docker引擎的环境中工作。
在boot2docker VM中 或者在完整的Linux主机中。