应用环境
Ubuntu 20.04.6 LTS (GNU/Linux 5.15.0-139-generic x86_64)
Docker version 28.1.1, build 4eba377
文章目录
-
- 一、部署Mongo
-
- [1. 拉取容器镜像](#1. 拉取容器镜像)
- [2. 生成Run脚本](#2. 生成Run脚本)
-
- [2.1 准备条件](#2.1 准备条件)
- [2.2 参数解读](#2.2 参数解读)
- [2.3 实例脚本](#2.3 实例脚本)
- [3. 实例操作](#3. 实例操作)
-
- [3.1 Mongo bash控制台](#3.1 Mongo bash控制台)
- [3.2 库表操作](#3.2 库表操作)
- [4. MongoDB Compass (GUI)](#4. MongoDB Compass (GUI))
- 二、安装Redis:7.4.1
-
- [1. 拉取容器镜像](#1. 拉取容器镜像)
- [2. 生成Run脚本](#2. 生成Run脚本)
-
- [2.1 实例脚本](#2.1 实例脚本)
- [2.2 运维管理](#2.2 运维管理)
- 参考资料
一、部署Mongo
MongoDB是一个流行的开源文档型数据库,它使用类似 JSON 的文档模型存储数据,这使得数据存储变得非常灵活。它基于文档的 NoSQL 数据库,由 MongoDB Inc. 公司用C++语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
1. 拉取容器镜像
bash
# 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 准备条件
创建实例存储路径目录
bash
# 创建mongo实例目录及config配置子目录
sudo mkdir -p /mongo/config
创建实例配置文件sudo vim mongod.conf
,内容如下
ini
# 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 参数解读
powershell
# 将镜像进实例化成容器并运行
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父目录,以便于维护和使用。
bash
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
# 登录到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")
执行结果如下
常用运维管理指令
bash
# 更新用户密码
db.changeUserPassword("admin","123456")
# 新增用户权限
db.updateUser("admin",{roles:[{role:"readWrite",db:"admin"}]})
# 删除用户
db.dropUser({'admin'})
# 查询所有用户
show users
3.2 库表操作
具体请见官方文档中文版,下面以创建一个库表数据集并执行查询为例
bash
# 创建库
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. 拉取容器镜像
bash
# 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}
,配置内容如下
bash
# 拉取配置文件(拉取不了就只能[手工下载]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
再运行如下脚本
bash
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 运维管理
bash
# 检查容器状态
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,并挂载存储,日志,配置文件