使用docker中的数据库mongo

如果要使用docker,一个强大的类似虚拟机的容器,然后目前我的docker是装在我的recruiting-system项目下的,所以想要使用docker,就必须切换到该项目目录下,在使用docker。

首先要先启动docker的服务器:
$ [sudo] service docker restart

启动docker中所有的容器:
$ docker-compose up -d

启动指定的容器:
$ docker-compose up -d mysql

查看目前已经启动的容器:
$ docker ps

进入指定的容器:
$ docker exec -it assembly_mongo_1 bash
或者:$ docker exec -it c6258a26bb98 bash
*#assembly_mongo_1是容器名,是通过docker ps命令查看得到的。

然后就可以使用相应的容器了!

使用docker中的数据库mongo_第1张图片
docker ps 结果

如果启动某一容器出错的话,如:

使用docker中的数据库mongo_第2张图片
说mysql的端口号被占用

原因是因为mysql的服务器没有关闭,所以可以关闭mysql的服务器就可以了。
关闭某一容器的服务:
$ service docker stop

启动nodebb服务器出错:

使用docker中的数据库mongo_第3张图片
nodebb不能连接到数据库mongo
比较诡异的事情:

如果本地mongo数据库中已经存在某一数据库,那么就不能成功在docker的mongo容器创建该数据库,虽然可以成功的use nodebb创建,也可以成功的插入数据,但是很奇怪的就是,查看所有的数据库的时候,就没有该数据库:如下图:

使用docker中的数据库mongo_第4张图片
奇怪的docker的mongo
使用docker中的数据库mongo_第5张图片
当前数据哭nodebb也没有任何的表

解决方法:
将本地数据库中的nodebb数据库导出,然后导入到docker的mongo中:
先切换到一个目录(随便):

导出数据:

首先要保证我需要导出数据的数据库的服务器是启动着的:
然后去系统的任何目录下:
1.执行如下命令,将nodebb数据库下的objects表导出,生成objects.json文件

$ mongoexport --db nodebb --collection objects --out objects.json
*#会在当前目录下生成一个文件objects.json

2.在同样的目录下,执行如下命令,将sessions.json中的数据导入nodebb数据库的sessions表中

$ mongoexport --db nodebb --collection sessions --out  sessions.json
*#会在当前目录下生成一个文件sessions.json
导入数据:

导数据之前,数据库中一定要创建有你要导入数据的数据库
必须在同样的目录下,也就是刚刚导出的文件objects.json,sessions.json
所在的目录:
首先要保证要导入数据的数据库的服务器,才能向数据库中导入数据,比如我要导入数据到docker的mongo数据库中,我就必须要把docker中的mongo启动着。

$ mongoimport --db nodebb --collection objects --file  objects.json
$ mongoimport --db nodebb --collection sessions --file  sessions.json

你可能感兴趣的:(使用docker中的数据库mongo)