雲伺服器下docker部署mongodb

2021-09-23 20:41:48 字數 3374 閱讀 6516

mongodb作為非關係型資料庫。本次配置是在阿里雲伺服器上配置。

首先可以通過以下指令獲取有哪些映象:

docker search mongo
顯示列表如下:

第乙個為root倉庫,也就是官方提供的mongo映象 ,接著拉取這個映象即可。

docker pull mongo
①.ubunut下

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <

之後eof結束輸入(在linux下輸入ctrl d表示的就是eol) 

然後在控制台接著鍵入:

sudo systemctl daemon-reload

sudo systemctl restart docker

其他的linux系統可以參考: 

接著鍵入:

docker images
然後執行mongo映象,mongo預設的埠是27017,所以在一開始啟動的時候需要指定這個埠。

docker run -d -p 27017:27017 --name mongo_test mongo
此命令是建立乙個基於mongo映象、名稱為mongo_test、並開放了27017=》27017的埠的乙個容器。 

如果開啟無誤的話,鍵入

docker ps
就會顯示正在執行的mongo_test容器。

如果失敗,則可以通過

docker logs mongo_test
來檢視出錯原因。

注意:這裡採用了-p 27017:27017來強制使得容器內的27017埠繫結到本地宿主機的27017埠上。

阿里雲預設只是開啟了一些必須的埠,比如用於ssh的21埠,開啟其他埠可參考這裡。

接著就可以在客戶端上登入mongodb來進行一些操作了,這裡使用的是python3和pymongo庫:

import pymongo

if __name__ == '__main__':

client = pymongo.mongoclient(host=替換成雲伺服器的ip位址, port=27017)

# 如果資料庫不存在,則建立名為school的庫

db = client['school']

collection = db.students

student =

result = collection.insert_one(student)

print(result)

如果沒出錯則表示成功。

也可以使用mongodb的客戶端來進行訪問。 

從上面的**可以看出,在mongodb暴露在了公網並開啟了埠後,所有人都可以直接運算元據庫而無需身份驗證,這顯然是存在問題的,所以接下來加入使用者驗證來保證安全性。

首先,需要停止、然後刪除掉原來的容器。

docker stop mongo_test

docker rm mongo_test

然後再重新開啟乙個容器: 

docker run -d -p 27017:27017 --name mongo_test mongo --auth
新增--auth表示mongo需要驗證才能操作。 

接著需要進入mongo_test容器內建立使用者管理員賬戶。

①.新增使用者

首先需要進入到正在執行的mongo_test容器中,

docker exec -it mongo_test /bin/bash
然後輸入mongo進入到mongodb的命令列互動模式下,在此模式下執行如下命令:

use admin

db.createuser(]})

上面的命令先是切換到admin資料庫,然後建立乙個名為「admin」,密碼為「admin123」的使用者,並賦予最高許可權。

接著之後在切換到admin時就需要驗證成功後才可以操作,比如在mongo客戶端下:

use admin

db.auth("admin", "admin123")

返回1則表示驗證成功。之後再鍵入show users則會返回admin下的所有使用者。

建立普通使用者和建立管理員使用者基本類似,只不過許可權不同而已。

use school

db.createuser(

] }

)

如果不存在school庫,則建立這個庫,之後建立乙個使用者 ,它對於school庫有讀寫的許可權。

注意:use school表示的是建立的使用者是在school下的;還有就是如果 admin 庫沒有任何使用者的話,即使在其他資料庫中建立了使用者,啟用身份驗證,預設的連線方式依然會有超級許可權。

許可權說明:

之後就需要改寫之前的python**了,在操作前需要先驗證,成功後才可以接著操作。

import pymongo

if __name__ == '__main__':

client = pymongo.mongoclient(host=ip位址, port=27017)

# 如果資料庫不存在,則建立名為school的庫

db = client['school']

db.authenticate(name="******", password="admin123")

collection = db.students

student =

result = collection.insert_one(student)

print(result)

②.刪除使用者

比如要刪除之前在school庫中建立的******角色的話,需要在mongodb命令列中輸入:

use school;

db.dropuser("******")

刪除所有賬戶

db.dropalluser()

阿里雲伺服器下使用docker部署jupyter

最近計畫了解faiss,但是faiss無法在windows下安裝,因此打算把faiss部署到伺服器上進行一些簡單的測試,然後學長就推薦了乙個互動式筆記本jupyter。這裡主要記錄一下如何在映象裡部署jupyter。使用conda安裝jupyter conda install jupyter建立乙個...

hexo部署雲伺服器

之前我的hexo是直接部署到git上面的,但是隨著我的vpn到期,訪問部落格的速度是越來越慢,最後打算直接部署到linux伺服器上。伺服器上面需要安裝git,建立乙個空倉庫,然後利用鉤子監控,每次有push過來直接clone到nginx的資料夾裡面。yum install y git再有就是我們不能...

雲伺服器部署 Linux下安裝nginx

之前兩篇,分別講了 linux下安裝mysql 和 springboot專案部署雲伺服器 nginx安裝也是挺簡單的。具體步驟如下 建議進入 usr local nginx位置 最後安裝nginx root localhost tar zxvf nginx 1.8.0.tar.gz root loc...