Docker中运行Neo4j

查看最新的Neo4j镜像版本 此时最新为4.0

docker pull neo4j:4.0 拉取镜像4.0

报错Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 10.0.2.3:53: read udp 10.0.2.15:51774->10.0.2.3:53: i/o timeout

可能DNS解析有点问题,看了一下全都是美国弗吉尼亚的Amazon数据中心,应该是访问不到

去找阿里云镜像,然后被满页的广告蒙蔽了双眼,一个多小时之后,我买了一台云服务器 :D

我是谁?我在哪?我刚才不是在学Docker吗?后来,我就开始搭服务器了。。。

一天之后,我回来了。继续学这个


云服务器

在云服务器中 docker pull neo4j 默认拉取 lasted 版本,这时速度依然很慢

添加阿里云地址 速度起飞….

docker run -it -d -p 7474:7474 -p 7687:7687 neo4j:4.0 7474端口用于管理界面,7687端口用于登录连接neo4j服务端 。采用后台运行方式启动,返回一个containerid

然而在云服务器还要进行安全组端口配置

这里试了几次都有点问题,不太明白是哪里出了问题,难度是没装java?或者是防火墙没关?

装sdkman来管理java,先装个java8 不得不说挺方便的,不用自己去改环境变量了 java -version 查看的版本为1.8

折腾了一会放弃了,还是在电脑上运行把。


Windows

同样添加一下toolbox镜像加速

1
2
3
4
docker-machine ssh default
sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=阿里云镜像加速地址 |g" /var/lib/boot2docker/profile
exit
docker-machine restart default

这里使用的是我自己阿里云控制台里的镜像加速地址

重启之后提示 docker info 无法查看信息,提示 You may need to re-run the docker-machine env command.

docker-machine env default 根据查询结果 输入 eval $("C:\Program Files\Docker Toolbox\docker-machine.exe" env default)

再次 docker info 查看信息成功,重新拉取neo4j, 很快的样子

二十分钟过后….好吧,并不快….

运行docker run -d -p 7474:7474 -p 7687:7687 neo4j 在浏览器依然没有显示??

怎么回事,之前用neo4j的bin文件运行是没有问题的,难道是docker的原因?

这时我想到了,docker实际上是一个虚拟机,那么在浏览器用localhost的访问当然是不行的,所以找到docker的IP 为 192.168.99.100

再访问 http://192.168.99.100:7474/browser/ 就有界面了


云服务器

这时我又回到云服务器,试图找出存在的问题

docker ps -a 命令

我发现在本机运行时

1
2
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                      NAMES
2d9721591b68 neo4j "/sbin/tini -g -- /d…" 53 minutes ago Up 48 minutes 0.0.0.0:7474->7474/tcp, 7473/tcp, 0.0.0.0:7687->7687/tcp jolly_goldberg

状态为UP , 端口也映射成功

但是云服务器上的却是 Exited (1)

1
2
3
4
5
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
28ba3f7d0527 neo4j "/sbin/tini -g -- /d…" 10 seconds ago Exited (1) 9 seconds ago fervent_ptolemy
0ba0cba50e7d neo4j "/sbin/tini -g -- /d…" 11 minutes ago Exited (1) 11 minutes ago sad_pascal
03f239d99289 neo4j:4.0 "/sbin/tini -g -- /d…" 3 hours ago Exited (1) 3 hours ago tender_shannon
78df828be80b hello-world "/hello" 23 hours ago Exited (0) 23 hours ago suspicious_mestorf

也就是说,neo4j并没有正常的运行起来

去掉后台运行参数-d 后重新运行,报错 /var/lib/neo4j/bin/neo4j: line 238: /var/lib/neo4j/conf/neo4j.conf: Permission denied

出现了访问限制。

然而我并没有找到这个/var/lib/neo4j 这个目录,应该是要修改镜像文件吧。然而docker一般都是部署的已经写好的代码,所以用在云服务器上用docker运行neo4j的话,其实还要对源码进行相应的修改,构建自己的镜像,这个以后真正要部署的时候再说吧,也就是上传源码的事

话说回来,我一定非要在docker中运行neo4j吗…


linux

又开始折腾了,这次是在linux系统上装了Docker 和Neo4J

sudo docker run --publish=7474:7474 --publish=7687:7687 neo4j

成功运行起来了, 使用默认账户密码neo4j/neo4j 登陆