如何使用守护进程的新标志重新启动现有MongoDB Docker容器 现状 我有一个MongoDB实例在没有复制集标志(--replSet)的服务器上运行 我以前在数据库中存储了一些信息,希望保留这些信息 目标 但是,我希望使用为守护进程设置的--replSet“my set”标志重新启动容器,并保持以前的信息完整 实施
我正试着跟随一个程序,并在我本地的机器上进行测试如何使用守护进程的新标志重新启动现有MongoDB Docker容器 现状 我有一个MongoDB实例在没有复制集标志(--replSet)的服务器上运行 我以前在数据库中存储了一些信息,希望保留这些信息 目标 但是,我希望使用为守护进程设置的--replSet“my set”标志重新启动容器,并保持以前的信息完整 实施,mongodb,docker,Mongodb,Docker,我正试着跟随一个程序,并在我本地的机器上进行测试 创建一个标准MongoDB Docker容器,其中不包含表示当前状态的标志replSetset: docker run -d --name mongo_rs --publish 37017:27017 mongo 我使用MongoDB指南针连接到DB,并向名为test的数据库和名为players的集合添加了一些虚拟信息 我停下集装箱: docker container stop mongo_rs docker cp docker-entry
replSet
set:
docker run -d --name mongo_rs --publish 37017:27017 mongo
test
的数据库和名为players
的集合添加了一些虚拟信息docker container stop mongo_rs
docker cp docker-entrypoint.sh mongo_rs:/usr/local/bin/docker-entrypoint.sh
docker start mongo_rs
--replSet“my set”
添加到mongo\u rs
容器中,并通过mongo
Shell配置副本集,如本教程所述。实现这一目标的可能解决方案是什么?这里有一个解决方法:
1-将入口点脚本复制到主机:
docker cp mongo_rs:/usr/local/bin/docker-entrypoint.sh .
2-编辑脚本,将行(最后一行)exec“$@”
更改为:
mongod --replSet my-mongo-set --port 27017
3-将脚本重新复制到容器中:
docker container stop mongo_rs
docker cp docker-entrypoint.sh mongo_rs:/usr/local/bin/docker-entrypoint.sh
docker start mongo_rs
4-启动您的容器:
docker container stop mongo_rs
docker cp docker-entrypoint.sh mongo_rs:/usr/local/bin/docker-entrypoint.sh
docker start mongo_rs
这是我的.yml文件
version: '3.7'
services:
node1:
image: mongo
ports:
- 30001:27017
volumes:
- $HOME/mongoclusterdata/node1:/data/db
networks:
- mongocluster
command: mongod --replSet comments
node2:
image: mongo
ports:
- 30002:27017
volumes:
- $HOME/mongoclusterdata/node2:/data/db
networks:
- mongocluster
command: mongod --replSet comments
depends_on :
- node1
node3:
image: mongo
ports:
- 30003:27017
volumes:
- $HOME/mongoclusterdata/node3:/data/db
networks:
- mongocluster
command: mongod --replSet comments
depends_on :
- node2
networks:
mongocluster:
driver: bridge
卷部分具有与根不同的绝对路径。实际上docker文件在根目录上创建了一个自配置文件,因此,如果您将根目录作为docker compose安装位置,请将其更改为其他位置,此时配置文件设置将永远不会在docker install up/down上删除。不幸的是,无法更新容器的
CMD
。您只能更新此处提到的内容:。备份数据库并使用所需的标志启动一个新容器。还要检查以下内容:。“黑客”解决方案是转到容器的配置,比如/var/lib/docker/containers//config.json
,修改它,然后重新启动docker守护程序。@tgogos我正在研究它。如果把它写在docker-compose
文件中,这个东西会很容易吗?我看不出docker-compose
在这种情况下有什么帮助。我会docker exec-it mongo\u rs bash
进入mongo容器,然后使用mongoexport
将数据库保存到文件中。您可以使用docker cp…
将此文件复制到主机,然后我将启动一个新的mongo容器,并尝试使用mongoimport
从头开始创建db。