Docker 1.9: Port forwarding on Mac OS X
Since the Neo4j 2.3.0 release there’s been an official docker image which I thought I’d give a try this afternoon.
The last time I used docker about a year ago I had to install boot2docker which has now been deprecated in place of Docker Machine and the Docker Toolbox.
I created a container with the following command:
docker run --detach --publish=7474:7474 neo4j/neo4j
And then tried to access the Neo4j server locally:
$ curl http://localhost:7474
curl: (7) Failed to connect to localhost port 7474: Connection refused
I quickly checked that docker had started up Neo4j correctly:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1f7c48e267f0 neo4j/neo4j "/docker-entrypoint.s" 10 minutes ago Up 10 minutes 7473/tcp, 0.0.0.0:7474->7474/tcp kickass_easley
Looks good. Amusingly I then came across my own blog post from a year ago where I’d run into the same problem - the problem being that we need to access the Neo4j server via the VM’s IP address rather than localhost.
Instead of using boot2docker we now need to use docker-machine to find the VM’s IP address:
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
default * virtualbox Running tcp://192.168.99.100:2376
$ curl http://192.168.99.100:7474
{
"management" : "http://192.168.99.100:7474/db/manage/",
"data" : "http://192.168.99.100:7474/db/data/"
}
And we’re back in business.
About the author
I'm currently working on short form content at ClickHouse. I publish short 5 minute videos showing how to solve data problems on YouTube @LearnDataWithMark. I previously worked on graph analytics at Neo4j, where I also co-authored the O'Reilly Graph Algorithms Book with Amy Hodler.