Like Share Discussion Bookmark Smile

J.J. Huang   2019-05-04   Docker   瀏覽次數:

Docker - 第十一章 | 安裝MongoDB

最近看了資料庫的今天的排名,詳情可以看這篇 DB-Engines 发布 8 月份全球数据库排名,Solr 排名上升 ,而這篇要來介紹的MonogoDB。

搜尋 Image

Searh指令進化一下,只搜尋10顆星以上的。

1
docker search -f=stars=10 mongo

拉取 Image

1
docker pull mongo

查看 Image

1
docker images

執行 Image

使用volume

由於docker卷是持久性的,因此可以專門為此目的建立volume。

1
2
docker volume create --name mongo-data
docker run -d -p 27017:27017 --name mongodb --restart always -v mongo-data:/data/db mongo
  • -d :後台執行 Container ,並返回ID
  • -p 27017:27017 :將 Container 的 27017 Port 映射到主機的 27017 Port (前面代表主機,後面代表容器)
  • -name mongodb :將 Container 取名為 mongodb
  • -restart always :如果 container 遇到例外的情況被 stop 掉,例如是重新開機,docker 會試著重新啟動此 container
  • -v mongo-data:/data/db :使用剛建立的volume,mongo-data 掛載到 Container 的 /data/db。
  • mongo :指定安裝的鏡像mongo

掛載主機目錄

這不可移植,因為它依賴於主機上具有正確權限的目錄。但是,在需要將此卷分配給某些特定底層存儲的某些情況下,它可能很有用。

1
2
cd /Users/morose/Documents/Temp/Docker/MongoDB
docker run -d -p 27017:27017 --name mongodb --restart always -v $PWD/mongo-data:/data/db mongo
  • -d :後台執行 Container ,並返回ID
  • -p 27017:27017 :將 Container 的 27017 Port 映射到主機的 27017 Port (前面代表主機,後面代表容器)
  • -name mongodb :將 Container 取名為 mongodb
  • -restart always :如果 container 遇到例外的情況被 stop 掉,例如是重新開機,docker 會試著重新啟動此 container
  • -v $PWD/mongo-data :將主機當前目錄下的 /mongo-data 掛載到 Container 的 /data/db。
  • mongo :指定安裝的鏡像mongo

確認MongoDB是否有運行?

1
docker exec mongodb mongo --eval "print(version())"

進入 Container

1
docker exec -it mongodb bash
  • -i :即使沒有附加也保持STDIN 打開
  • -t :分配一個偽終端

資料庫測試

詳細的MongoDB shell指令可以參考mongo Shell Quick Reference

要啟動MongoDB shell客戶端,請執行以下命令

1
mongo

通過以下方式查看實例中存在哪些資料庫

1
show dbs

建立新資料庫,我們可以使用多步驟過程,第一步是定義我們希望使用的資料庫

1
use jjtest

我們正在使用資料庫jjtest,但在我們開始建立集合和資料之前它不存在。要使用資料建立集合,我們可以執行以下操作

1
2
db.people.save({ firstname: "J.J.", lastname: "Huang" })
db.people.save({ firstname: "I.I.", lastname: "Red" })

people在我們的jjtest資料庫中的新集合中建立了兩個文件,我們可以使用以下內容查詢資料

1
db.people.find({ firstname: "J.J." })

你剛剛了解如何將MongoDB的Docker鏡像下載和部署為容器,然後使用shell客戶端與其進行交互。Docker不是部署MongoDB的唯一方法,而shell客戶端不是與它交互的唯一方式。這些只是你可以完成的許多示例中的兩個。


註:以上參考了
mongo
MongoDB 教程
使用 docker 建立 MongoDB Replica Set
Getting Started With MongoDB As A Docker Container Deployment
用 Docker 玩轉 MongoDB