在Docker上安裝Mongo及Redis-NOSQL數據庫

應用環境
Ubuntu 20.04.6 LTS (GNU/Linux 5.15.0-139-generic x86_64)
Docker version 28.1.1, build 4eba377

文章目錄

    • 一、部署Mongo
      • 1. 拉取容器鏡像
      • 2. 生成Run腳本
        • 2.1 準備條件
        • 2.2 參數解讀
        • 2.3 實例腳本
      • 3. 實例操作
        • 3.1 Mongo bash控制臺
        • 3.2 庫表操作
      • 4. MongoDB Compass (GUI)
        • 登錄連接配置
    • 二、安裝Redis:7.4.1
      • 1. 拉取容器鏡像
      • 2. 生成Run腳本
        • 2.1 實例腳本
        • 2.2 運維管理
    • 參考資料

一、部署Mongo

MongoDB是一個流行的開源文檔型數據庫,它使用類似 JSON 的文檔模型存儲數據,這使得數據存儲變得非常靈活。它基于文檔的 NoSQL 數據庫,由 MongoDB Inc. 公司用C++語言編寫,旨在為 WEB 應用提供可擴展的高性能數據存儲解決方案。

1. 拉取容器鏡像

# mongo:8.0
sudo docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mongo:8.0# 添加標簽名Tag
sudo docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mongo:8.0 docker.io/mongo:8.0# 移除標簽名Tag
docker rmi swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mongo:8.0

國內鏡像參考:
渡渡鳥鏡像

2. 生成Run腳本

可參考:渡渡鳥-Run助手

2.1 準備條件

創建實例存儲路徑目錄

# 創建mongo實例目錄及config配置子目錄
sudo mkdir -p /mongo/config

創建實例配置文件sudo vim mongod.conf,內容如下

# Dbase path
dbpath=/mongo/data# logs file path
logpath=/mongo/logs/mongod.log# lisen port
port=27017# All IP addresses are allowed to connect.
bind_ip=0.0.0.0# Enable log recording
journal=true# Whether to run in the background
fork=true# Enable authentication
auth=true

由于docker run卷映射**-v**參數是會自動創建不存在的宿主機路徑目錄的,只需要把配置文件所在路徑及配置信息保存一下就可以了。

2.2 參數解讀
# 將鏡像進實例化成容器并運行
docker run# 【i】保持STDIN(標準輸入)開放,即使沒有附加任何東西。這通常用于讓容器的進程保持運行,即使沒有附加到終端。例如,你可以在容器內部運行一個交互式shell
# 【t】分配一個偽終端(pseudo-TTY),這對于交互式shell非常重要,比如當你想要在容器中運行bash或sh時。
# 【d】后臺運行,即所謂的“detached”模式。容器會在后臺啟動,并且你會得到容器的ID或名稱
-itd# 容器命名
--name mongo# 重啟策略
## no:不自動重啟,缺省時默認
## always:始終重啟
## unless-stopped:Docker 服務重啟后自動啟動容器,除非容器被手動停止。可指定最大重試次數,例如 --restart=on-failure:3(最多重啟3次)。
## on-failure:僅在容器非正常退出(退出狀態碼非0)時重啟。
--restart=always \# 【p】映射策略,<宿主端口>:<容器端口>
-p 27017:27017 \# 使用本地時區
-e TimeZone='Asia/Shanghai' \
-e TZ='Asia/Shanghai' \
-v /etc/localtime:/etc/localtime \# 掛載卷映射(宿主:容器)
## /data/config/mongod.conf:實例化配置文件
## /data/db:應用數據
## /mongo/logs:運行日志
-v /mongo/config/mongod.conf:/etc/mongod.conf \
-v /mongo/db:/data/db \
-v /mongo/logs:/var/log/mongodb \# 讓容器獲取宿主機root權限
--privileged=true \# 最后一行所引用的docker鏡像源
2.3 實例腳本

此處在卷標映射時,將配置文件以及數據庫一起存放到mongo父目錄,以便于維護和使用。

sudo docker run -itd --restart=always \
-p 17017:27017 \
-e TimeZone='Asia/Shanghai' \
-e TZ='Asia/Shanghai' \
-v /etc/localtime:/etc/localtime \
-v /mongo/config/mongod.conf:/etc/mongod.conf \
-v /mongo/db:/data/db \
-v /mongo/logs:/var/log/mongodb \
-e MONGO_INITDB_ROOT_USERNAME=root \
-e MONGO_INITDB_ROOT_PASSWORD="123456" \
--privileged=true \
--name mongo \
docker.io/mongo:8.0

3. 實例操作

3.1 Mongo bash控制臺
# 登錄到bash控制臺
sudo docker exec -it mongo mongosh
# 當配置文件,啟用auth=true時。需要以root身份登錄
sudo docker exec -it mongo mongosh -u root -p '123456' --authenticationDatabase admin
## 如果不指定,切換到admin庫,創建db用戶時會報錯
## 認證失敗:MongoServerError[AuthenticationFailed]: Authentication failed.# 打開系統admin庫
use admin
# 創建root用戶
db.auth("admin","123456")

執行結果如下
在這里插入圖片描述
常用運維管理指令

# 更新用戶密碼
db.changeUserPassword("admin","123456")# 新增用戶權限
db.updateUser("admin",{roles:[{role:"readWrite",db:"admin"}]})# 刪除用戶
db.dropUser({'admin'})
# 查詢所有用戶
show users
3.2 庫表操作

具體請見官方文檔中文版,下面以創建一個庫表數據集并執行查詢為例

# 創建庫
use huchi
# 新增一個庫用戶并分配讀寫權限
db.createUser({user: "admin",pwd: "admin",roles:["readWrite"]})
# 開啟身份權限權限
db.auth('admin','admin')# 創建數據集
db.temp_sales.insert({ name:"abc", age:22, 'weight': '50斤'} )# 查詢數據集
db.temp_sales.find()

執行結果如下
在這里插入圖片描述

4. MongoDB Compass (GUI)

MongoDB Compass 是一款功能強大的 GUI,用于在可視環境中查詢、聚合和分析 MongoDB 數據。
Compass 可免費使用并提供源代碼,并且可以在 macOS、Windows 和 Linux 上運行。
詳細操作文檔請見官方使用文檔,下載地址MongoDB Compass(GUI)。

登錄連接配置

只是沒有找到中文語言包,就這么用吧。
在這里插入圖片描述
查詢temp_sales數據內容如下
在這里插入圖片描述

二、安裝Redis:7.4.1

Redis 是由 Redis Ltd.開發的高性能開源內存數據庫,以其極速響應和靈活的數據結構(如字符串、哈希、列表)著稱,廣泛應用于緩存、實時消息隊列等場景。為應對復雜數據處理需求,它在Redis核心基礎上增加了一些高級功能和模塊,以支持更多的使用場景和需求。Redis Stack 包括以下幾個主要組件:

  • JSON文檔:RedisJSON用于在 Redis 中存儲和操作 JSON 數據結構,支持復雜的 JSON 查詢和更新操作。
  • 全文搜索:RediSearch提供全文搜索和二次索引功能,使得在 Redis 中可以進行復雜的搜索查詢。
  • 圖數據庫:RedisGraph模塊,支持圖數據結構的存儲和查詢,適用于社交網絡、推薦系統等場景。
  • 時序數據:RedisTimeSeries專門用于時間序列數據的存儲和分析,支持高效的時間序列數據寫入和查詢。
  • 布隆過濾器:RedisBloom一種概率數據結構,旨在以高度節省內存的方式快速確定元素是否存在于集合中。

Redis Stack 通過這些模塊的組合,使得開發者可以在一個統一的平臺上處理多種類型的數據和查詢需求,極大地擴展了 Redis 的應用場景。官方提供了兩種鏡像版本:

  • redis/redis-stack:包含 Redis Stack server 和 Redis Insight。該容器最適合本地開發。
  • redis/redis-stack-server:僅提供 Redis Stack server 。該容器最適合生產部署。

兩者區別在于有沒有帶有 RedisInsight web可視化端。

1. 拉取容器鏡像

# redis:7.4.1
sudo docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/redis:7.4.1# 添加標簽名Tag
sudo docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/redis:7.4.1 redis:7.4.1# 移除標簽名Tag
sudo docker rmi swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/redis:7.4.1

國內鏡像參考:
渡渡鳥鏡像

2. 生成Run腳本

可參考:渡渡鳥-Run助手

2.1 實例腳本

首先,創建宿主機掛載目錄sudo mkdir -p /docker/redis/{conf,data},配置內容如下

# 拉取配置文件(拉取不了就只能[手工下載]https://download.redis.io/releases/ 對應的版本包)
sudo wget -O https://raw.githubusercontent.com/redis/redis/7.4/redis.conf docker/redis/conf/redis-server.conf# 編輯配置
sudo vim docker/redis/conf/redis-server.conf## 修改內容如下(:wq!保存)
bind 127.0.0.1 或者 bind 127.0.0.1 -::1   #注釋掉這部分,使redis可以外部訪問
daemonize no        #用守護線程的方式啟動
logfile "redis.log"	#日志文件路徑(選配)
requirepass 123456  #給redis設置密碼
appendonly yes    #redis持久化  默認是no
tcp-keepalive 300 #防止出現遠程主機強迫關閉了一個現有的連接的錯誤 默認是300

再運行如下腳本

sudo docker run -itd \
--restart=unless-stopped \
-p 6379:6379 \
-e TimeZone='Asia/Shanghai' \
-e TZ='Asia/Shanghai' \
-v /etc/localtime:/etc/localtime \
-v /docker/redis/conf/redis-server.conf:/conf/redis.conf \
-v /docker/redis/data:/data \
--name redis \
--privileged=true \
redis:7.4.1 redis-server /etc/redis/redis.conf
2.2 運維管理
# 檢查容器狀態
sudo docker ps -a | grep redis
sudo docker inspect redis# 登錄bash后端
sudo docker exec -it redis bash# 直連Redis庫
sudo docker exec -it redis bash -c "redis-cli"
## 有密碼連接Redis
sudo docker exec -it redis bash -c "redis-cli -a 123456"
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379>## 也可以登錄bash控制臺后
root@57a9462ebf07:/data# redis-cli -h 127.0.0.1 -p 6379 -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379># Redis數據測試
127.0.0.1:6379> set a 1
OK
127.0.0.1:6379> get a
"1"# 報錯:(error) NOAUTH Authentication required.
# 原因:redis身份驗證失敗,指令操作無效。# 獲取密碼
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "123456"# 修改密碼
config set requirepass 777888
## 需注意的是,該密碼不再重寫conf中該配置參數(重啟服務則仍以conf配置為主)。

參考資料

docker安裝Redis
Docker 安裝 Redis 詳細指南
docker安裝redis7.0
Docker部署redis,并掛載存儲,日志,配置文件

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/88057.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/88057.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/88057.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java 編程之責任鏈模式

一、什么是責任鏈模式&#xff1f; 責任鏈模式&#xff08;Chain of Responsibility Pattern&#xff09; 是一種行為型設計模式&#xff0c;它讓多個對象都有機會處理請求&#xff0c;從而避免請求的發送者和接收者之間的耦合關系。將這些對象連成一條鏈&#xff0c;沿著這條…

1、做中學 | 一年級上期 Golang簡介和安裝環境

一、什么是golang Golang&#xff0c;通常簡稱 Go&#xff0c;是由 Google 公司的 Robert Griesemer、Rob Pike 和 Ken Thompson 于 2007 年創建的一種開源編程語言&#xff0c;并在 2009 年正式對外公布。 已經有了很多編程語言&#xff0c;為什么還要創建一種新的編程語言&…

Linux--迷宮探秘:從路徑解析到存儲哲學

上一篇博客我們說完了文件系統在硬件層面的意義&#xff0c;今天我們來說說文件系統在軟件層是怎么管理的。 Linux--深入EXT2文件系統&#xff1a;數據是如何被組織、存儲與訪問的&#xff1f;-CSDN博客 &#x1f30c; 引言&#xff1a;文件系統的宇宙觀 "在Linux的宇宙中…

淘寶商品數據實時獲取方案|API 接口開發與安全接入

在電商數據獲取領域&#xff0c;除了官方 API&#xff0c;第三方數據 API 接入也是高效獲取淘寶商品數據的重要途徑。第三方數據 API 憑借豐富的功能、靈活的服務&#xff0c;為企業和開發者提供了多樣化的數據解決方案。本文將聚焦第三方數據 API 接入&#xff0c;詳細介紹其優…

什么是防抖和節流?它們有什么區別?

文章目錄 一、防抖&#xff08;Debounce&#xff09;1.1 什么是防抖&#xff1f;1.2 防抖的實現 二、節流&#xff08;Throttle&#xff09;2.1 什么是節流&#xff1f;2.2 節流的實現方式 三、防抖與節流的對比四、總結 在前端開發中&#xff0c;我們經常會遇到一些高頻觸發的…

Springboot集成阿里云OSS上傳

Springboot集成阿里云OSS上傳 API 接口描述 DEMO提供的四個API接口&#xff0c;支持不同方式的文件和 JSON 數據上傳&#xff1a; 1. 普通文件上傳接口 上傳任意類型的文件 2. JSON 字符串上傳接口 上傳 JSON 字符串 3. 單個 JSON 壓縮上傳接口 上傳并壓縮 JSON 字符串…

刪除大表數據注意事項

數據庫是否會因刪除操作卡死&#xff0c;沒有固定的 “安全刪除條數”&#xff0c;而是受數據庫配置、表結構、操作方式、當前負載等多種因素影響。以下是關鍵影響因素及實踐建議&#xff1a; 一、導致數據庫卡死的核心因素 硬件與數據庫配置 CPU / 內存瓶頸&#xff1a;刪除…

Redis 是單線程模型?|得物技術

一、背景 使用過Redis的同學肯定都了解過一個說法&#xff0c;說Redis是單線程模型&#xff0c;那么實際情況是怎樣的呢&#xff1f; 其實&#xff0c;我們常說Redis是單線程模型&#xff0c;是指Redis采用單線程的事件驅動模型&#xff0c;只有并且只會在一個主線程中執行Re…

[特殊字符] AIGC工具深度實戰:GPT與通義靈碼如何徹底重構企業開發流程

&#x1f50d; 第一模塊&#xff1a;理念顛覆——為什么AIGC不是“玩具”而是“效能倍增器”&#xff1f; ▍企業開發的核心痛點圖譜&#xff08;2025版&#xff09; ??研發效能瓶頸??&#xff1a;需求膨脹與交付時限矛盾持續尖銳&#xff0c;傳統敏捷方法論已觸天花板?…

(LeetCode 面試經典 150 題) 169. 多數元素(哈希表 || 二分查找)

題目&#xff1a;169. 多數元素 方法一&#xff1a;二分法&#xff0c;最壞的時間復雜度0(nlogn)&#xff0c;但平均0(n)即可。空間復雜度為0(1)。 C版本&#xff1a; int nnums.size();int l0,rn-1;while(l<r){int mid(lr)/2;int ans0;for(auto x:nums){if(xnums[mid]) a…

(17)java+ selenium->自動化測試-元素定位大法之By css上

1.簡介 CSS定位方式和xpath定位方式基本相同,只是CSS定位表達式有其自己的格式。CSS定位方式擁有比xpath定位速度快,且比CSS穩定的特性。下面詳細介紹CSS定位方式的使用方法。相對CSS來說,具有語法簡單,定位速度快等優點。 2.CSS定位優勢 CSS定位是平常使用過程中非常重要…

【軟考高級系統架構論文】企業集成平臺的技術與應用

論文真題 企業集成平臺是一個支持復雜信息環境下信息系統開發、集成和協同運行的軟件支撐環境。它基于各種企業經營業務的信息特征,在異構分布環境(操作系統、網絡、數據庫)下為應用提供一致的信息訪問和交互手段,對其上運行的應用進行管理,為應用提供服務,并支持企業信息…

i.MX8MP LVDS 顯示子系統全解析:設備樹配置與 DRM 架構詳解

&#x1f525; 推薦&#xff1a;《Yocto項目實戰教程&#xff1a;高效定制嵌入式Linux系統》 京東正版促銷&#xff0c;歡迎支持原創&#xff01; 鏈接&#xff1a;https://item.jd.com/15020438.html i.MX8MP LVDS 顯示子系統全解析&#xff1a;設備樹配置與 DRM 架構詳解 在…

keep-alive實現原理及Vue2/Vue3對比分析

一、keep-alive基本概念 keep-alive是Vue的內置組件&#xff0c;用于緩存組件實例&#xff0c;避免重復渲染。它具有以下特點&#xff1a; 抽象組件&#xff1a;自身不會渲染DOM&#xff0c;也不會出現在父組件鏈中包裹動態組件&#xff1a;緩存不活動的組件實例&#xff0c;…

安卓jetpack compose學習筆記-Navigation基礎學習

目錄 一、Navigation 二、BottomNavigation Compose是一個偏向靜態刷新的UI組件&#xff0c;如果不想要自己管理頁面切換的復雜狀態&#xff0c;可以以使用Navigation組件。 頁面間的切換可以NavHost&#xff0c;使用底部頁面切換欄&#xff0c;可以使用腳手架的bottomBarNav…

基于大數據技術的在UGC數據分析與路線推薦的研究

博主介紹&#xff1a;java高級開發&#xff0c;從事互聯網行業六年&#xff0c;熟悉各種主流語言&#xff0c;精通java、python、php、爬蟲、web開發&#xff0c;已經做了六年的畢業設計程序開發&#xff0c;開發過上千套畢業設計程序&#xff0c;沒有什么華麗的語言&#xff0…

flask通過表單自動產生get請求的參數、form表單實現POST請求的自動提交

通過表單自動產生get請求的參數 相關代碼如下&#xff1a; import flaskapp flask.Flask(__name__)app.route(/) def login():html <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8"><title>flask表單實現get…

《情感反詐模擬器》2025學習版

1.2 專業內容支持 67篇情感詐騙案例研究14萬字心理學分析資料783條專業配音對白 二、安裝與運行 2.1 系統要求 最低配置&#xff1a; 顯卡&#xff1a;GTX 1060CPU&#xff1a;i5-8400存儲&#xff1a;25GB空間 2.2 運行步驟 解壓游戲文件&#xff08;21.7GB&#xff09;…

預訓練 vs. 微調:大模型落地的核心兩步,究竟有何不同?

在人工智能領域&#xff0c;尤其是自然語言處理&#xff08;NLP&#xff09;和計算機視覺&#xff08;CV&#xff09;&#xff0c;大型模型如GPT系列、BERT、Stable Diffusion等取得了令人矚目的成就。支撐這些模型廣泛應用的關鍵技術流程&#xff0c;通常包含兩個核心階段&…

微信原生小程序轉uniapp過程及錯誤總結

https://ask.dcloud.net.cn/article/35786 此文章尤為重要&#xff0c;可以使用輔助工具 1、this.setData 源代碼&#xff1a; this.setData({dateTime: obj.dateTime, });需更換為 this.dateTime obj.dateTime2、cookie問題 在此文章有解釋 https://blog.csdn.net/ni155…