【发布时间】:2015-07-07 09:37:14
【问题描述】:
我正在尝试安装 Docker 客户端远程 API 库 (https://github.com/spotify/docker-client) 来进行一些图像搜索和检查图像数据(全部在公共存储库中)。我已经下载、安装并运行了 boot2docker 虚拟机。诸如“Docker pull 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 调用都返回“服务器未能以有效的 HTTP 响应响应”
【问题讨论】:
-
您是否在 boot2docker TinyCore VM Linux 主机上运行了您的 Java 程序?
-
不,我在 Eclipse 的 Windows 7 中运行它。我刚刚开始意识到:在 VM 之外无法访问 Docker 守护进程,是吗?我什至如何才能让我的 Java 程序在 VM 中运行?我想最简单的选择是在 linux 上安装 docker 并从那里开始工作。
-
完全正确:您需要在 docker 引擎所在的位置运行您的 java 程序(执行
docker search):在 Linux 主机(boot2docker VM)中
标签: java eclipse git maven docker