MongoDB 是一款較為常用的NOSQL 數(shù)據(jù)庫(kù),結(jié)合 Docker 使用,能實(shí)現(xiàn)輕松配置部署、遷移,本文以下為簡(jiǎn)要介紹如何在 Docker 中部署并使用 MongoDB。下文主要分為幾個(gè)部分,內(nèi)容如下:
- MongoDB 鏡像安裝
- MongoDB 容器創(chuàng)建
- MongoDB 容器數(shù)據(jù)目錄掛載
- MongoDB 數(shù)據(jù)遷移
- MongoDB 常用 Docker 命令
MongoDB Docker 鏡像安裝
MongoDB 提供官方鏡像,下載安裝鏡像方法如下:
docker pull mongo
以上命令為安裝 MongoDB 最新版本的鏡像。
MongoDB Docker 容器創(chuàng)建
MongoDB Docker 容器創(chuàng)建有以下幾個(gè)問(wèn)題:
1- MongoDB 容器基本創(chuàng)建方法和數(shù)據(jù)目錄掛載
2- MongoDB 容器的數(shù)據(jù)遷移
3- MongoDB 設(shè)置登錄權(quán)限問(wèn)題
MongoDB 容器基本創(chuàng)建方法和數(shù)據(jù)目錄掛載
MongoDB 容器基本創(chuàng)建命令如下:
docker run -p 27017:27017 -v <LocalDirectoryPath>:/data/db --name docker_mongodb -d mongo
在上面的命令中,幾個(gè)命令參數(shù)的詳細(xì)解釋如下:
-p 指定容器的端口映射,mongodb 默認(rèn)端口為 27017
-v 為設(shè)置容器的掛載目錄,這里是將<LocalDirectoryPath>即本機(jī)中的目錄掛載到容器中的/data/db中,作為 mongodb 的存儲(chǔ)目錄
--name 為設(shè)置該容器的名稱
-d 設(shè)置容器以守護(hù)進(jìn)程方式運(yùn)行

以上是 MongoDB 容器創(chuàng)建后的信息。
接下來(lái),我們使用 Robo 3T 圖形界面軟件嘗試打開(kāi)數(shù)據(jù)庫(kù)。
打開(kāi) RoBo 3T,選擇新建連接,按照下圖填入相關(guān)數(shù)據(jù)庫(kù)信息,保存。

然后點(diǎn)擊連接,數(shù)據(jù)庫(kù)連接成功,界面如下圖顯示

這里我們可以看到,這是一個(gè)空的數(shù)據(jù)庫(kù)。隨后我們創(chuàng)建一個(gè)
test_database的數(shù)據(jù)庫(kù),然后在創(chuàng)建一個(gè)test_collection的集合,再在這個(gè)集合中添加一個(gè)文檔,文檔內(nèi)容為:
{'info': 'create success!'}
我們可以通過(guò) RoBo 3T來(lái)查看目前數(shù)據(jù)庫(kù)中數(shù)據(jù)的情況

容器數(shù)據(jù)遷移
接下來(lái),我們先停止剛才創(chuàng)建的 docker_mongodb 容器,命令如下:
docker stop docker_mongodb
然后我們?cè)賱?chuàng)建一個(gè)新的 MongoDB 容器,掛載剛才剛剛的數(shù)據(jù)目錄,命令如下:
docker run -p 27017:27017 -v <LocalDirectoryPath>:/data/db --name docker_mongodb_migration -d mongo
我們可以容器查詢命令,查看當(dāng)前 Docker 的容器狀態(tài),命令如下:
docker container ls -a
這里的 -a 參數(shù)是查看所有的容器,包括已經(jīng)停止的容器。

我們可以從輸出結(jié)果看到,這時(shí)
docker_mongodb 的狀態(tài)是 Exited,表示已經(jīng)退出,而新創(chuàng)建的 docker_mongodb_migration 的狀態(tài)顯示為 Up,表明數(shù)據(jù)庫(kù)正在運(yùn)行。
然后我們?cè)俅蜷_(kāi) RoBo 3T,連接數(shù)據(jù)庫(kù),可以看到我們看到我們?cè)?docker_mongodb 中創(chuàng)建的數(shù)據(jù),這里表明我們新創(chuàng)建的 docker_mongodb_migration 掛載的數(shù)據(jù)目錄和 docker_mongodb 相同,利用這一方法,我們可以實(shí)現(xiàn)簡(jiǎn)單的數(shù)據(jù)遷移。

MongoDB 的 Docker 常用命令
使用 Docker MongoDB 會(huì)使用到以下幾個(gè)常用的命令。
查看當(dāng)前運(yùn)行的容器
# 查看正在運(yùn)行的容器
docker container ls
# 查看所有容器
docker container ls -a
停止容器
# 指定 CONTAINER ID 停止容器
docker stop <CONTAINER ID>
# 指定容器名稱停止容器
docker stop <CONTAINER NAME>
啟動(dòng)已經(jīng)停止的容器
# 指定容器 CONTAINER ID 啟動(dòng)容器
docker start <CONTAINER ID>
# 指定容器名稱啟動(dòng)容器
docker start <CONTAINER NAME>
重啟已經(jīng)運(yùn)行的容器
# 指定容器 CONTAINER ID 重啟容器
docker restart <CONTAINER ID>
# 指定容器名稱重啟容器
docker restart <CONTAINER NAME>
進(jìn)入 mongo 交互模式
docker exec -it <CONTAINER NAME> mongo admin