2016-03-07 136 views
0

很简单:泊坞窗Neo4j的容器,只是挂

[email protected]:~/development$ docker -v 
Docker version 1.6.2, build 7c8fca2 

我跑these instructions开始泊坞窗。

docker run --detach --name neo4j --publish 7474:7474 \ 
      --volume $HOME/neo4j/data:/data neo4j 

这里没有什么令人兴奋的;这应该都是正常的。 但是,http://localhost:7474不响应。当我跳进容器时,它似乎响应得很好(参见调试会话)。我错过了什么?

[email protected]:~$ docker ps 
CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS    PORTS        NAMES 
2d9e0d5d2f73  neo4j:latest  "/docker-entrypoint. 15 minutes ago  Up 15 minutes  7473/tcp, 0.0.0.0:7474->7474/tcp neo4j    
[email protected]:~$ curl http://localhost:7474 
^C 
[email protected]:~$ time curl http://localhost:7474 
^C 

real 0m33.353s 
user 0m0.008s 
sys 0m0.000s 
[email protected]:~$ docker exec -it 2d9e0d5d2f7389ed8b7c91d923af4a664471a93f805deb491b20fe14d389a3d2 /bin/bash 
[email protected]:/var/lib/neo4j# curl http://localhost:7474 
{ 
    "management" : "http://localhost:7474/db/manage/", 
    "data" : "http://localhost:7474/db/data/" 
}[email protected]:/var/lib/neo4j# exit 
[email protected]:~$ docker logs 2d9e0d5d2f7389ed8b7c91d923af4a664471a93f805deb491b20fe14d389a3d2 
Starting Neo4j Server console-mode... 
/var/lib/neo4j/data/log was missing, recreating... 
2016-03-07 17:37:22.878+0000 INFO No SSL certificate found, generating a self-signed certificate.. 
2016-03-07 17:37:25.276+0000 INFO Successfully started database 
2016-03-07 17:37:25.302+0000 INFO Starting HTTP on port 7474 (4 threads available) 
2016-03-07 17:37:25.462+0000 INFO Enabling HTTPS on port 7473 
2016-03-07 17:37:25.531+0000 INFO Mounting static content at /webadmin 
2016-03-07 17:37:25.579+0000 INFO Mounting static content at /browser 
2016-03-07 17:37:26.384+0000 INFO Remote interface ready and available at http://0.0.0.0:7474/ 
+0

你在容器里面试过'netstat'吗?似乎只有服务器绑定到本地主机。 – loadaverage

+0

这看起来像我一样的问题:http://stackoverflow.com/questions/35850160/cant-connect-to-a-docker-container-port-where-an-app-is-listening –

+0

什么docker --version报告? –

回答

0

代替把请求localhost的你要使用泊坞窗机VM IP地址,你可以用这个命令确定:

docker-machine inspect default | grep IPAddress 

curl -i http://$(docker-machine ip default):7474/ 

默认IP地址是192.168.99.100

+0

我在Linux上,所以码头机器不适用。然而,这里是相当于linux的输出:christian @ christian:〜/ Downloads/neo4j-community-2.3.2/bin $ docker inspect neo4j | grep的ip地址 “ip地址”: “172.17.0.7”, 基督教基督教@:〜/下载/ Neo4j的社区-2.3.2 /斌$时间卷曲172.17.0.7:7474 ^ C 真正\t 0m11.309s 用户\t 0m0.004s sys \t 0m0.000s –

+0

@ChristianBongiorno - Localhost很好。 –

+0

@DonBranson我替换了:http:// localhost http://127.0.0.1和容器的IP地址。它只是挂起。 –

1

我不能重现这一点。 Docker 1.8.2。 & 1.10.0与您的情况确定:

docker run --detach --name neo4j --publish 7474:7474 neo4j 

curl -i 127.0.0.1:7474 
HTTP/1.1 200 OK 
Date: Tue, 08 Mar 2016 16:45:46 GMT 
Content-Type: application/json; charset=UTF-8 
Access-Control-Allow-Origin: * 
Content-Length: 100 
Server: Jetty(9.2.4.v20141103) 

{ 
    "management" : "http://127.0.0.1:7474/db/manage/", 
    "data" : "http://127.0.0.1:7474/db/data/" 
} 

尝试升级泊坞窗,并检查网络过滤规则进行转发。

+0

有没有官方的,甚至准官方的支持Ubuntu的16.04 https://github.com/docker/docker/issues/20192 我会在这个问题上再坐一会儿。我已经订阅了这个问题,所以如果他们发布真正的支持,我会知道的。 –

+0

我应该检查哪些netfilter规则? Docker应该为我管理所有这些。由于我已经安装了Java,因此无需docker即可运行,并且已被证明是真正的PITA! –

+0

GAH!好吧,我不知道为什么这很重要,但我有一个修复。将回答我自己的问题。我高举你,因为你的回答激发了我的改变 –

0

好的,基本上我把args中的卷装卸下来,然后运行。最终,我不想要一个不在容器外的装载。感谢@LoadAverage为我提供帮助。它仍然不是'正确的',但对我的目的我不在乎。

[email protected]:~/development$ docker run --detach --name neo4j --publish 7474:7474 neo4j 
6c94527816057f8ca1e325c8f9fa7b441b4a5d26682f72d42ad17614d9251170 
[email protected]:~/development$ curl http://127.0.0.1:7474 
{ 
    "management" : "http://127.0.0.1:7474/db/manage/", 
    "data" : "http://127.0.0.1:7474/db/data/" 
} 
[email protected]:~/development$ 
+0

welks :)因为我没有neo的经验,不能提出任何合理的建议。 – loadaverage