1. 程式人生 > 其它 >Docker Container應用部分shell操作要求程序停止問題

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容器問題的處理,思路值得學習