docker - 具有Blazegraph Triple Store的Docker容器可能由于联网而无法正常工作

标签 docker sparql rdf triplestore blazegraph

我正在准备一个Docker镜像来教我的学生链接数据的基础知识。我希望他们实际准备适当的RDF并模拟将其作为链接数据发布到Web上的过程,因此我准备了一个Docker镜像,其中包括:

  • 三重存储:Blazegraph,侦听端口9999。
  • GRefine。我已经复制了包含RDF扩展名的Open Refine实例。监听端口3333。
  • 链接数据服务器:我复制了一个Jetty实例,其中包含Pubby。侦听端口8080。

  • 我已经在本地主机(运行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,则可以访问三元组存储:

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

    PS: jetty 也以同样的方式失败,而且GRefine甚至无法正常工作。

    最佳答案

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

    您需要运行类似
    docker inspect --format '{{ .NetworkSettings.IPAddress }}' "CONTAINER ID"
    其中CONTAINER ID是您的Docker实例的值。

    关于docker - 具有Blazegraph Triple Store的Docker容器可能由于联网而无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33368741/

    相关文章:

    docker - docker 上的 Grafana : not able to find log

    linux - 关于构建和运行 Boot2docker 设置的一些问题

    xml - 产品的 RDFa 内容实现

    docker - 为什么默认情况下所有端口都使用此 Docker 镜像发布

    java - 使用 Jena 在 DBpedia 上创建 SPARQL 查询

    sparql - 如何使用SPARQL查询同时获取字段和字段计数?

    sparql - 如何使用 Sesame 查询 SPARQL 端点,例如 DBPedia?

    rdf - 如何指定关系链暗示另一个关系链

    rdf - jena直接推断图

    php - 连接拒绝 docker、laravel 和 mysql 服务器