拉取镜像
>>> docker search neo4j
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/neo4j Neo4j is a highly scalable, robust native ... 1167 [OK]
docker.io docker.io/bitnami/neo4j Bitnami Docker Image for Neo4j 11 [OK]
docker.io docker.io/neo4j/neo4j-experimental Experimental Neo4j Docker images 10
# 选择第一个就好
>>> docerk pull docker.io/neo4j
启动容器,解决闪退
docker run -d --name container-name
-d --name container_name ## -d表示容器后台运行 --name指定容器名字
-p 7474:7474 -p 7687:7687 ## 映射容器的端口号到宿主机的端口号
-v /home/neo4j/data:/data ## 把容器内的数据目录挂载到宿主机的对应目录下
-v /home/neo4j/logs:/logs ## 挂载日志目录
-v /home/neo4j/conf:/var/lib/neo4j/conf ## 挂载配置目录
-v /home/neo4j/import:/var/lib/neo4j/import ## 挂载数据导入目录
--env NEO4J_AUTH=neo4j/password ## 设定数据库的名字的访问密码
neo4j ## 指定使用的镜像
退出原因:
1、docker容器运行必须有一个前台进程, 如果没有前台进程执行,容器认为空闲,就会自行退出
2、容器运行的命令如果不是那些一直挂起的命令( 运行top,tail、循环等),就是会自动退出
3、这个是 docker 的机制问题
解决办法
删除镜像
docker stop container-name
docker rm container-name
方案一:死循环
就是起一个死循环进程,让他不停的循环下去,前台永远有进程执行,那么容器就不会退出了,以centos为例
# 示例一
docker run -d --name neo4j-001 \
-p 7474:7474 -p 7687:7687 \
-v /home/neo4j/data:/data \
-v /home/neo4j/logs:/logs \
-v /home/neo4j/conf:/var/lib/neo4j/conf \
-v /home/neo4j/import:/var/lib/neo4j/import \
--env NEO4J_AUTH=neo4j/neo4j \
neo4j
-c "while true; do echo hello world; sleep 1; done"
# 示例二
docker run -d --name neo4j-001 \
-p 7474:7474 -p 7687:7687 \
-v /home/neo4j/data:/data \
-v /home/neo4j/logs:/logs \
-v /home/neo4j/conf:/var/lib/neo4j/conf \
-v /home/neo4j/import:/var/lib/neo4j/import \
--env NEO4J_AUTH=neo4j/neo4j \
neo4j
-c "tail -f /dev/null"
缺点: 命令太冗长了,还占用一个终端
方案二:指定交互式运行
启动一个一直停留在后台运行的neo4j
docker run -dit --name neo4j-001 \
-p 7474:7474 -p 7687:7687 \
-v /home/neo4j/data:/data \
-v /home/neo4j/logs:/logs \
-v /home/neo4j/conf:/var/lib/neo4j/conf \
-v /home/neo4j/import:/var/lib/neo4j/import \
--env NEO4J_AUTH=neo4j/neo4j \
neo4j bash
## 添加-it 参数交互运行
## 添加-d 参数后台运行
启动neo4j服务
# 进入容器
docker exec -it neo4j-001 bash
# 启动服务
root@adec639e46b0:/var/lib/neo4j# neo4j start
Directories in use:
home: /var/lib/neo4j
config: /var/lib/neo4j/conf
logs: /logs
plugins: /var/lib/neo4j/plugins
import: /var/lib/neo4j
data: /var/lib/neo4j/data
certificates: /var/lib/neo4j/certificates
licenses: /var/lib/neo4j/licenses
run: /var/lib/neo4j/run
Starting Neo4j.
Started neo4j (pid:122). It is available at http://0.0.0.0:7474
There may be a short delay until the server is ready.
# 查看服务
root@adec639e46b0:/var/lib/neo4j# neo4j status
Neo4j is running at pid 122