具有Blazegraph Triple Store的Docker容器可能由于网络而无法工作

时间:2015-10-27 13:03:13

标签: docker sparql rdf triplestore blazegraph

我正在准备Docker镜像,以向我的学生传授关联数据的基础知识。我希望他们实际准备正确的RDF并模拟在Web上作为Linked Data发布它的过程,所以我准备了一个包含以下内容的Docker镜像:

  • 三重商店:Blazegraph,收听9999端口。
  • GRefine。我复制了一个Open Refine实例,其中包含了RDF扩展。听3333号港口。
  • Linked Data Server:我复制了一个Jetty实例,里面有Pubby。听8080端口。

我已在我的localhost(运行Ubuntu 14.04)中测试了三个并且它们工作正常。这是我用来构建图像的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 working

但是,如果尝试执行任何操作(查询,上传数据......),则三重存储会因“错误”而失败:无法联系服务器&#34;。由于相同的设置适用于主机,我假设我在使用Docker时遇到了问题。我尝试使用-P而不是映射端口,并使用--net=host,但我得到了同样的错误。

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

1 个答案:

答案 0 :(得分:1)

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

您需要运行类似

的内容

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

其中CONTAINER ID是泊坞窗实例的值。