docker 启动 neo4j 启动后,容器立即退出:Exited (70)

拉取镜像

>>> 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值