Docker Container应用部分shell操作要求进程停止问题

Docker Container应用部分shell操作要求进程停止问题

问题描述

docker容器中,比如neo4j的neo4j-dump导出以及恢复数据库方法要求停用neo4j进程,但是docker容器中是没有办法停止主程序进程的,停止进程会造成容器down,而没办法进行其他操作。这个操作是与容器的运行相冲突的,不止neo4j,其他许多应用也会遇到类似问题

解决方案

解决前提:容器已经采用挂载将目录暴露

具体方案:

  • 首先停止主容器
sudo docker stop myneo4j
  • 启动一个新的容器,并且挂载相同的目录
sudo docker run \
-v myneo4j/data:/data \
# -v some other dirs
--name myneo4j-dump \
- it \
neo4j /bin/bash
  • 进入容器,执行导入导出命令
bin/neo4j-admin dump --database=<your target database> --to=data/<your dumpfiles name>.dump

bin/neo4j-admin load --from=data/<your loadfiles name>.dump --database=<your tartget database> --force

tips: 新容器不能与旧容器使用同一个数据库名,这样就能保证旧数据库不处于使用状态,通过新容器的neo4j-admin进行操作,将数据导入data目录后即可在原容器中进行使用

该方法的意义在于所有相似docker容器问题的处理,思路值得学习

posted @ 2021-07-07 11:10  -拂石-  阅读(112)  评论(0编辑  收藏  举报