乐趣区

Docker入门(二)在docker使用MongoDB

  本文将介绍如何在 docker 中使用 MongoDB。如果你是一名 MongoDB 的初学者,那么你入门 MongoDB 的第一件事就是安装 MongoDB,但是安装 MongoDB 又不是一件简单的事情,还需要自己配置一些服务。这时候,docker 就能帮上大忙,它能够让你不需要本地安装 MongoDB 就能使用 MongoDB。下面让我们来看看这是怎么实现的。首先你的电脑上需要安装 docker,然后在 docker 的镜像中查询 MongoDB 的镜像,命令如下:
docker search mongodb
输出的结果如下:
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mongo MongoDB document databases provide high avai… 5606 [OK]
mongo-express Web-based MongoDB admin interface, written w… 386 [OK]
tutum/mongodb MongoDB Docker image – listens in port 27017… 224 [OK]
bitnami/mongodb Bitnami MongoDB Docker Image 83 [OK]
percona/percona-server-mongodb Percona Server for MongoDB docker images 23
frodenas/mongodb A Docker Image for MongoDB 17 [OK]
centos/mongodb-32-centos7 MongoDB NoSQL database server 5
centos/mongodb-26-centos7 MongoDB NoSQL database server 5
eses/mongodb_exporter mongodb exporter for prometheus 4 [OK]
centos/mongodb-36-centos7 MongoDB NoSQL database server 4
quadstingray/mongodb MongoDB with Memory and User Settings 3 [OK]
bigtruedata/php-mongodb PHP image with MongoDB support 2 [OK]
neowaylabs/mongodb-mms-agent This Docker image with MongoDB Monitoring Ag… 2 [OK]
tozd/mongodb Base image for MongoDB server. 2 [OK]
nuxeoapbcatalog/nuxeo-mongodb-apb MongoDB deployment for Nuxeo 1 [OK]
openshift/mongodb-24-centos7 DEPRECATED: A Centos7 based MongoDB v2.4 ima… 1
centos/mongodb-34-centos7 MongoDB NoSQL database server 1
webhippie/mongodb Docker images for mongodb 1 [OK]
perconalab/percona-server-mongodb-operator MOVED TO https://hub.docker.com/r/perconalab… 1
phenompeople/mongodb MongoDB is an open-source, document databas… 0 [OK]
gebele/mongodb mongodb 0 [OK]
mongodbsap/mongodbdocker 0
targetprocess/mongodb_exporter MongoDB exporter for prometheus 0 [OK]
ansibleplaybookbundle/mongodb-apb An APB to deploy MongoDB. 0 [OK]
xogroup/mongodb_backup_gdrive Docker image to create a MongoDB database ba… 0 [OK]
  我们在这些镜像中选择使用第一个镜像,即 mongo, 拉取 mongo 镜像,命令如下:
docker pull mongo
查看该镜像的信息:
docker images mongo
输出的结果如下:
REPOSITORY TAG IMAGE ID CREATED SIZE
mongo latest 0da05d84b1fe 2 weeks ago 394MB
  现在,在 docker 中已经存在 MongoDB 的镜像 mongo,接下来我们将使用这个镜像。输入命令:
docker run -p 27000:27017 -v $PWD/db:/data/db -d mongo:latest
其中,-p 参数为端口映射,格式为:主机 (宿主) 端口: 容器端口,- v 参数为数据卷挂载,将主机的目录 $PWD/db 映射到容器的 /data/db,这是为了存储 MongoDB 操作时的数据,- d 参数表示后台运行。接着输入以下命令查询正在运行的 docker 容器:
docker ps
输出如下:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9664a5056e78 mongo:latest “docker-entrypoint.s…” 3 seconds ago Up 2 seconds 0.0.0.0:27017->27017/tcp nervous_heyrovsky
接着运行以下命令,即可使用 docker 中的虚拟机,该虚拟机已帮你安装好 MongoDB,可以直接使用:
docker exec -it 9664a5056e78 bash
在虚拟机中输入 mongo,界面如下:

  以下将展示一些 MongoDB 的基础操作,具体的入门教程可以参考:https://blog.csdn.net/jclian9…。显示数据库:
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
  创建新数据库及集合:
> use school
switched to db school
> db.createCollection(‘teacher’)
{“ok” : 1}
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
school 0.000GB
  往集合中插入新文档:
> db.teacher.insert({id:1,name:’zhangshan’,age:38})
WriteResult({“nInserted” : 1})
> db.teacher.insert({id:2,name:’lisi’,age:47})
WriteResult({“nInserted” : 1})
> db.teacher.insert({id:3,name:’wangwu’,age:26})
WriteResult({“nInserted” : 1})
  查询文档:
> db.teacher.count()
3
> db.teacher.find()
{“_id” : ObjectId(“5c6d12d880b47c18564d99a7”), “id” : 1, “name” : “zhangshan”, “age” : 38 }
{“_id” : ObjectId(“5c6d12df80b47c18564d99a8”), “id” : 2, “name” : “lisi”, “age” : 47 }
{“_id” : ObjectId(“5c6d12e580b47c18564d99a9”), “id” : 3, “name” : “wangwu”, “age” : 26 }
> db.teacher.find({name: ‘lisi’})
{“_id” : ObjectId(“5c6d12df80b47c18564d99a8”), “id” : 2, “name” : “lisi”, “age” : 47 }
  此时,在 MongoDB 的可视化软件 Robo 3T 中,依然能够看到我们插入的数据,只是连接的端口改为 27000,如下图:

  本次介绍完毕,感谢大家阅读~
注意:本人现已开通微信公众号:Python 爬虫与算法(微信号为:easy_web_scrape),欢迎大家关注哦~~

退出移动版