Blazegraph Triple Store的Docker容器不能正常工作,这可能是由于networking造成的

我正在准备一个Docker镜像,教给我的学生关联数据的基础知识。 我希望他们真正准备好正确的RDF并模拟将其作为关联数据发布到Web上的过程,所以我准备了一个Docker镜像,其中包括:

  • 三重商店: Blazegraph ,听港口9999。
  • GRefine。 我已经复制了包含RDF扩展的Open Refine实例。 聆听3333港口。
  • 关联的数据服务器:我已经复制了一个Jetty的实例,里面有Pubby。 听港口8080。

我testing了三个在我的本地主机(运行Ubuntu 14.04),他们工作正常。 这是我用来构build图像的Dockerfile:

FROM ubuntu:14.04 MAINTAINER Mikel Egaña Aranguren <my.email@x.com> RUN apt-get update && apt-get install -y openjdk-7-jre wget curl RUN mkdir /LinkedDataServer COPY google-refine-2.5 /LinkedDataServer/google-refine-2.5 COPY blazegraph /LinkedDataServer/blazegraph COPY jetty /LinkedDataServer/jetty EXPOSE 9999 EXPOSE 3333 EXPOSE 8080 WORKDIR /LinkedDataServer CMD java -server -jar blazegraph/bigdata-bundled.jar CMD google-refine-2.5/refine -i 0.0.0.0 WORKDIR /LinkedDataServer/jetty CMD java -jar start.jar jetty.port=8080 

我运行容器,它确实映射适当的端口:

 docker run -d -p 9999:9999 -p 3333:3333 -p 8080:8080 mikeleganaaranguren/linked-data-server:0.0.1 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a08709d23acb mikeleganaaranguren/linked-data-server:0.0.1 /bin/sh -c 'java -ja 5 seconds ago Up 4 seconds 0.0.0.0:3333->3333/tcp, 0.0.0.0:8080->8080/tcp, 0.0.0.0:9999->9999/tcp dreamy_engelbart 

例如,三联商店似乎正在运作。 如果我去127.0.0.1:9999,我可以访问三重商店:

Blazegraph工作

但是,如果尝试执行任何操作(查询,上传数据…),则三重存储只会失败并显示“错误:无法联系服务器”。 由于主机上的设置相同,因此我认为我在Docker上做了一些错误。 我已经尝试使用-P而不是映射端口,并与--net=host ,但我得到相同的错误。

PS:docker也以同样的方式失败,而且GRefine甚至没有工作。

您需要确保使用Docker容器的IP来访问Blazegraph实例。 在容器之外,它不会在127.0.0.1上运行,而是分配给泊坞箱容器的IP。

你需要运行类似的东西

docker inspect --format '{{ .NetworkSettings.IPAddress }}' "CONTAINER ID"

其中CONTAINER ID是您的docker实例的值。

Interesting Posts