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/jclian91/article/details/78654274
  顯示數據庫:

> 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,如下圖:

27000端口

  本次介紹完畢,感謝大家閱讀~

注意:本人現已開通微信公眾號: Python爬蟲與算法(微信號為:easy_web_scrape), 歡迎大家關注哦~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM